Full Code of versatica/OverSIP for AI

master 8d8dd360be71 cached
167 files
3.6 MB
958.3k tokens
787 symbols
1 requests
Download .txt
Showing preview only (3,832K chars total). Download the full file or copy to clipboard to get everything.
Repository: versatica/OverSIP
Branch: master
Commit: 8d8dd360be71
Files: 167
Total size: 3.6 MB

Directory structure:
gitextract_ue3_qfqk/

├── .gitignore
├── .travis.yml
├── AUTHORS
├── CHANGELOG.md
├── Gemfile
├── LICENSE
├── README.md
├── Rakefile
├── bin/
│   └── oversip
├── create-deb.sh
├── debian/
│   ├── changelog
│   ├── compat
│   ├── control
│   ├── copyright
│   ├── oversip.default
│   ├── oversip.init
│   ├── postrm
│   ├── preinst
│   └── rules
├── etc/
│   ├── oversip.conf
│   ├── proxies.conf
│   ├── server.rb
│   └── tls/
│       ├── ca/
│       │   └── cacert.pem
│       ├── demo-tls.oversip.net.crt
│       ├── demo-tls.oversip.net.key
│       ├── upgrade-cacert.sh
│       └── utils/
│           ├── create-cert.rb
│           └── get-sip-identities.rb
├── ext/
│   ├── common/
│   │   ├── c_util.h
│   │   └── ruby_c_util.h
│   ├── sip_parser/
│   │   ├── common_headers.h
│   │   ├── compile_ragel_files.sh
│   │   ├── compile_ragel_sip_message_parser.sh
│   │   ├── compile_ragel_sip_uri_parser.sh
│   │   ├── ext_help.h
│   │   ├── extconf.rb
│   │   ├── grammar_absolute_uri.rl
│   │   ├── grammar_name_addr.rl
│   │   ├── grammar_sip_core.rl
│   │   ├── grammar_sip_headers.rl
│   │   ├── grammar_sip_message.rl
│   │   ├── grammar_sip_uri.rl
│   │   ├── grammar_tel_uri.rl
│   │   ├── sip_message_parser.c
│   │   ├── sip_message_parser.rl
│   │   ├── sip_parser.h
│   │   ├── sip_parser_ruby.c
│   │   ├── sip_uri_parser.c
│   │   └── sip_uri_parser.rl
│   ├── stud/
│   │   └── extconf.rb
│   ├── stun/
│   │   ├── ext_help.h
│   │   ├── extconf.rb
│   │   └── stun_ruby.c
│   ├── utils/
│   │   ├── compile_ragel_files.sh
│   │   ├── ext_help.h
│   │   ├── extconf.rb
│   │   ├── grammar_ip.rl
│   │   ├── haproxy_protocol.c
│   │   ├── haproxy_protocol.h
│   │   ├── haproxy_protocol.rl
│   │   ├── ip_utils.c
│   │   ├── ip_utils.h
│   │   ├── ip_utils.rl
│   │   ├── outbound_utils.c
│   │   ├── outbound_utils.h
│   │   ├── outbound_utils.rl
│   │   ├── utils_ruby.c
│   │   └── utils_ruby.h
│   ├── websocket_framing_utils/
│   │   ├── ext_help.h
│   │   ├── extconf.rb
│   │   ├── ws_framing_utils.h
│   │   └── ws_framing_utils_ruby.c
│   └── websocket_http_parser/
│       ├── compile_ragel_files.sh
│       ├── ext_help.h
│       ├── extconf.rb
│       ├── grammar_ws_http_core.rl
│       ├── grammar_ws_http_headers.rl
│       ├── grammar_ws_http_request.rl
│       ├── ws_http_parser.c
│       ├── ws_http_parser.h
│       ├── ws_http_parser.rl
│       └── ws_http_parser_ruby.c
├── lib/
│   ├── oversip/
│   │   ├── config.rb
│   │   ├── config_validators.rb
│   │   ├── default_server.rb
│   │   ├── errors.rb
│   │   ├── fiber_pool.rb
│   │   ├── launcher.rb
│   │   ├── logger.rb
│   │   ├── modules/
│   │   │   ├── outbound_mangling.rb
│   │   │   └── user_assertion.rb
│   │   ├── proxies_config.rb
│   │   ├── ruby_ext/
│   │   │   └── eventmachine.rb
│   │   ├── sip/
│   │   │   ├── client.rb
│   │   │   ├── client_transaction.rb
│   │   │   ├── constants.rb
│   │   │   ├── core.rb
│   │   │   ├── launcher.rb
│   │   │   ├── listeners/
│   │   │   │   ├── connection.rb
│   │   │   │   ├── ipv4_tcp_client.rb
│   │   │   │   ├── ipv4_tcp_server.rb
│   │   │   │   ├── ipv4_tls_client.rb
│   │   │   │   ├── ipv4_tls_server.rb
│   │   │   │   ├── ipv4_tls_tunnel_server.rb
│   │   │   │   ├── ipv4_udp_server.rb
│   │   │   │   ├── ipv6_tcp_client.rb
│   │   │   │   ├── ipv6_tcp_server.rb
│   │   │   │   ├── ipv6_tls_client.rb
│   │   │   │   ├── ipv6_tls_server.rb
│   │   │   │   ├── ipv6_tls_tunnel_server.rb
│   │   │   │   ├── ipv6_udp_server.rb
│   │   │   │   ├── tcp_client.rb
│   │   │   │   ├── tcp_connection.rb
│   │   │   │   ├── tcp_server.rb
│   │   │   │   ├── tls_client.rb
│   │   │   │   ├── tls_server.rb
│   │   │   │   ├── tls_tunnel_connection.rb
│   │   │   │   ├── tls_tunnel_server.rb
│   │   │   │   └── udp_connection.rb
│   │   │   ├── listeners.rb
│   │   │   ├── message.rb
│   │   │   ├── message_processor.rb
│   │   │   ├── name_addr.rb
│   │   │   ├── proxy.rb
│   │   │   ├── request.rb
│   │   │   ├── response.rb
│   │   │   ├── rfc3263.rb
│   │   │   ├── server_transaction.rb
│   │   │   ├── sip.rb
│   │   │   ├── tags.rb
│   │   │   ├── timers.rb
│   │   │   ├── transport_manager.rb
│   │   │   ├── uac.rb
│   │   │   ├── uac_request.rb
│   │   │   └── uri.rb
│   │   ├── syslog.rb
│   │   ├── system_callbacks.rb
│   │   ├── tls.rb
│   │   ├── utils.rb
│   │   ├── version.rb
│   │   └── websocket/
│   │       ├── constants.rb
│   │       ├── http_request.rb
│   │       ├── launcher.rb
│   │       ├── listeners/
│   │       │   ├── connection.rb
│   │       │   ├── ipv4_ws_server.rb
│   │       │   ├── ipv4_wss_server.rb
│   │       │   ├── ipv4_wss_tunnel_server.rb
│   │       │   ├── ipv6_ws_server.rb
│   │       │   ├── ipv6_wss_server.rb
│   │       │   ├── ipv6_wss_tunnel_server.rb
│   │       │   ├── ws_server.rb
│   │       │   ├── wss_server.rb
│   │       │   └── wss_tunnel_server.rb
│   │       ├── listeners.rb
│   │       ├── websocket.rb
│   │       ├── ws_framing.rb
│   │       └── ws_sip_app.rb
│   └── oversip.rb
├── oversip.gemspec
├── test/
│   ├── oversip_test_helper.rb
│   ├── test_http_parser.rb
│   ├── test_name_addr.rb
│   ├── test_name_addr_parser.rb
│   ├── test_sip_message_parser.rb
│   ├── test_sip_uri_parser.rb
│   └── test_uri.rb
└── thirdparty/
    └── stud/
        └── NOTES

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
/*.gem
/.bundle
/.config
/test/tmp
/tmp
/Gemfile.lock
*.so
*.o
*.bundle
.DS_Store
Makefile
mkmf.log
/bin/oversip_stud
/thirdparty/stud/stud/
/OLD
/TODO
/NO_GIT


================================================
FILE: .travis.yml
================================================
language: ruby
rvm:
  - 1.9.3
  - 2.0.0
  - 2.1
  - 2.2
  - 2.3
  - 2.4.0-preview2

before_install:
  - gem install bundler -v 1.12.6
  - sudo apt-get install libev-dev libssl-dev

after_script:
  - rake test


================================================
FILE: AUTHORS
================================================
MAIN AUTHOR
===========

- Iñaki Baz Castillo <ibc@aliax.net> (Github @ibc)



CONTRIBUTORS
============

- Jon Bonilla <manwe@aholab.ehu.es> (Github @manwe)

  Lots of help with packaging for Debian based distributions.
  The first deployment of OverSIP in production for thousands of clients.

- Saúl Ibarra Corretgé <saghul@gmail.com> (Github @saghul)

  Testing, ideas, proposals, too many proposals.

- José Luis Millán <jmillan@aliax.net> (Github @jmillan)

  Intensive testing with JsSIP library acting as a SIP Outbound UA with OverSIP.


================================================
FILE: CHANGELOG.md
================================================
CHANGELOG
=========

Version 2.0.3 (released in 2016-01-29)
--------------------------------------

- Suitable for Debian Jessie and for Ruby >= 1.9.3 and Ruby 2.X.X.


Version 2.0.0 (released in 2014-09-24)
--------------------------------------

- [(437abd4)](https://github.com/versatica/OverSIP/commit/437abd4c6e389c4add03395e6f33d456d2daa8a9) Remove Posix Message Queue dependency. OverSIP can now run in OSX.


Version 1.4.0 (released in 2013-09-15)
--------------------------------------

- [(7befa37)](https://github.com/versatica/OverSIP/commit/7befa378d535bb5822dc7260516eaae8158fb9f6) RFC 6228 (199 response) implemented in `Proxy#drop_response(response)`. The method now allows passing the `OverSIP::SIP::Response` instance to drop and, in case it is a [3456]XX response and the received request includes "Supported: 199" then a 199 response is sent upstream.

- [(1159607)](https://github.com/versatica/OverSIP/commit/1159607ef524c8bba012fb19f60153d52b7d23f3) New `OverSIP::SIP::Request#ruri=(uri)` method which replaces the Request URI of the request by passing an `OverSIP::SIP::Uri` instance or a string. Also allow passing a URI as string to `UacRequest.initialize` and route based on it (if no `dst_host` param is given to the `Uac` instance routing such a request). New class methods `OverSIP::SIP::Uri.parse(string)` and `OverSIP::SIP::NameAddr.parse(string)` which generate instances of those classes.

- [(a2971fc)](https://github.com/versatica/OverSIP/commit/a2971fcc5c2e4fd4ed816d555b59442a64d22c33) New `OverSIP::ParsingError` exception which is raised when invalid data is passed to `OverSIP::SIP::Uri.parse(uri)` or `OverSIP::SIP::NameAddr.parse(name_addr)`.

- [(2689e02)](https://github.com/versatica/OverSIP/commit/2689e02d4358daf12eac76264a0e2cac96fcb665) `OverSIP::SIP::Proxy` and `OverSIP::SIP::Uac` instances now allow setting multiple callbacks (for events like `on_success_response`) and all of them will be executed sequentially.

- [(4b7c47f)](https://github.com/versatica/OverSIP/commit/4b7c47fd27e5186c71541952a1bb28af35cfcaa5) New method `OverSIP::SIP::Uri#has_param?(param)`.

- [(774de3b)](https://github.com/versatica/OverSIP/commit/774de3b537fb6afdc71adb1047184cf0785c495c) New instance methods `clear_on_xxxxxx()` and `clear_callbacks()` to clear existing callbacks in `OverSIP::SIP::Proxy` and `OverSIP::SIP::Uac`.

- [(e58974f)](https://github.com/versatica/OverSIP/commit/e58974feea8cd7962ea3efa8d8476f4bd54e52f9) New design of `OverSIP::Modules::OutboundMangling` module: `add_outbound_to_contact()` now requires passing an `OverSIP::SIP::Proxy` as argument rather than a request, and it internally adds the callback to the 2XX response (for reverting the custom ;ov-ob param) so `remove_outbound_from_contact()` is no longer required and has been removed.

- [(31114a0)](https://github.com/versatica/OverSIP/commit/31114a091c9649574af0710f23e459f0bd488757) Added `OverSIP::SIP::Uri#clear_params()` which removes all the params from the URI.

- [(c610d90)](https://github.com/versatica/OverSIP/commit/c610d90b326174b37368f11b27d40c839d76de9d) Add `advertised_ipv4` and `advertised_ipv6` configuration options for running OverSIP in NAT'ed boxes.


Version 1.3.8 (released in 2013-05-16)
--------------------------------------

- [(04b0882)](https://github.com/versatica/OverSIP/commit/04b088259f0881f5a09af9ebef9ce6e5387c4c02) `request.fix_nat()` works now for initial requests regardless `request.loose_route()` is not called (thanks to Vlad Paiu for reporting).


Version 1.3.7 (released in 2013-01-28)
--------------------------------------

- [(ac18ff2)](https://github.com/versatica/OverSIP/commit/ac18ff28e2eaebfd9b3b0f69893e84adb5be04fb) Added `OverSIP.root_fiber` attribute which stores the root `Fiber`.


Version 1.3.6 (released in 2013-01-03)
--------------------------------------

- [(0a858b1)](https://github.com/versatica/OverSIP/commit/0a858b11bb1351b85690f8a5aabbf7d467ed8792) Encode the body in UTF-8 also when received via WebSocket.

- `s/2012/2013/g`.


Version 1.3.5 (released in 2012-12-17)
--------------------------------------

- [(6ee6b8c)](https://github.com/versatica/OverSIP/commit/6ee6b8c808e24ad9680291e67ff85ca30889cb2f) Fixed a bug in name_addr.rb that prevents the NameAddr to be printed until some URI field is modified.

- [(9b20db3)](https://github.com/versatica/OverSIP/commit/9b20db392711e89ae3971945bcd2916df18f3907) Add via_branch_id attr reader to UacRequest to avoid a bug in `OverSIP::SIP::Uac#route()` method.



Version 1.3.3 (released in 2012-11-15)
--------------------------------------

- [(d9eee0d)](https://github.com/versatica/OverSIP/commit/d9eee0dbe0f7e0b9a9d8527ca9c57dc67cda0a8c) Improved OverSIP security limits (Posix Message Queue) for Debian/Ubuntu (fixes [bug #27](https://github.com/versatica/OverSIP/issues/27)).

- [(834462a)](https://github.com/versatica/OverSIP/commit/834462ab8481dd9855c501fe52247a28f3700bef) Use C binary syntax 0x1 instead of 0b00000001 (fixes [bug #23](https://github.com/versatica/OverSIP/issues/23) and [bug #29](https://github.com/versatica/OverSIP/issues/29)).



Version 1.3.2 (released in 2012-11-03)
--------------------------------------

- [(3d7fa9e)](https://github.com/versatica/OverSIP/commit/3d7fa9e4440968b7c13fe4c65b764ed71d084ec8) Fixed a bug that writes an empty Record-Route header when an INVITE asking for incoming Outbound support comes from a TCP connection initiated by OverSIP.


Version 1.3.1 (released in 2012-10-04)
--------------------------------------

- [(042fdaf)](https://github.com/versatica/OverSIP/commit/042fdaf17bfeddf22ffa80637b0e0fb387a77bff) Fixed an important bug in record-routing mechanism that makes OverSIP not to add Record-Route/Path headers.


Version 1.3.0 (released in 2012-10-04)
--------------------------------------

- [(6afa5a6)](https://github.com/versatica/OverSIP/commit/6afa5a6c2572aea4b78a3aba2fc5d2f0d81d96ce) All the callbacks in `server.rb` are now executed within a new [Fiber](http://www.ruby-doc.org/core-1.9.3/Fiber.html) allowing synchronous style coding by using [em-synchrony](https://github.com/igrigorik/em-synchrony) libraries.

- [(b950bba)](https://github.com/versatica/OverSIP/commit/b950bba6aa8d7e3e28d69f7fb3d850a4719e02ba) New class `OverSIP::SIP::Uac`that allows OverSIP behaving as a UAC for generating and sending SIP requests. New class `OverSIP::SIP::UacRequest` for generating requests to be sent via `OverSIP::SIP::Uac#route` method (also allows sending a received `OverSIP::SIP::Request` instance).

- New methods `initialize()`, `sip?`, `tel?` and `get_param()` for `OverSIP::SIP::Uri` class ([doc](http://www.oversip.net/documentation/1.3.x/api/sip/uri/)).

- New class `OverSIP::SIP::Client`, parent class of `OverSIP::SIP::Proxy` and `OverSIP::SIP::Uac`. New method `add_target_to_blacklist()` ([doc](http://www.oversip.net/documentation/1.3.x/api/sip/client/)).

- `OverSIP::SIP::Client#on_error()` method is now called with a third argument: a Ruby symbol trat represents the exact (internal) error code.

- `OverSIP::SIP::Client#on_target()` callback is now called with a single parameter: the instance of `OverSIP::SIP::RFC3263::Target` (API change).

- [(7e9733e)](https://github.com/versatica/OverSIP/commit/7e9733e95f04158bb69ed13130984e335c80c73c) New feature: automatic blacklists. When a destination (target) fails due to timeout, connection error or TLS validation error, the target is added to a temporal blacklist and future requests to same target are not attempted until the entry in the blacklist expires.


Version 1.2.0 (released in 2012-09-04)
--------------------------------------

- [(c921687)](https://github.com/versatica/OverSIP/commit/c9216872ccd43c3977b8816551f33d9d0c178899) Added `on_target()` and `abort_routing()` methods for `Proxy` class.

- [(7e54d1c)](https://github.com/versatica/OverSIP/commit/7e54d1c89351e0517bc12d543e577dff46f251a4) Don't raise an exception if the received STUN request contains an invalid IP family (vulnerability!).

- [(f7eefd6)](https://github.com/versatica/OverSIP/commit/f7eefd6d8e02d30e61fd219f4426e6e63ea7f2a8) If request.from or request.to (`NameAddr` instances) are modified before routing the request, changes are applied for the outgoing request and reverted when sending responses upstream.

- [(0f9d3ec)](https://github.com/versatica/OverSIP/commit/0f9d3ec9da96c51197535bcd5f0c65e5749ec855) If request.contact `NameAddr` fields are modified then changes are applied in the forwarded request.

- [(df1389e)](https://github.com/versatica/OverSIP/commit/df1389eda22806dc48f6595cc3e6460c58391411) Added `SystemCallbacks` module for 3rd party modules to set custom callbacks when OverSIP is started, reloaded (HUP signal) or stopped.

- [(9d310d6)](https://github.com/versatica/OverSIP/commit/9d310d6678ee79c47d17b5aab010a49b8683c3da) Added `OverSIP::SIP::Uri#aor()`method which returns "sip:user@domain" for a SIP/SIPS URI (no port or params) and "tel:number" for a TEL URI (no params).

- [(56e099b)](https://github.com/versatica/OverSIP/commit/56e099bb0500e6cda221750ade7848fda614b522) Added a new method `OverSIP::SystemEvents.on_initialize()` useful for 3rd party modules configuration by the user.

- [(aac4bad)](https://github.com/versatica/OverSIP/commit/aac4badafd924cdbd3344a6636fa9588d0b84c79) `OverSIP::SIP::Modules::RegistrarWithoutPath` renamed to `OverSIP::SIP::Modules::OutboundMangling`.

- [(ce48977)](https://github.com/versatica/OverSIP/commit/ce48977ca786def6d9c9f8af8d743da7c105dcf6) `OverSIP::SIP::Modules::Core` moved to `OverSIP::SIP::Core`.

- [(98e5308)](https://github.com/versatica/OverSIP/commit/98e530869e57150778327b29e5a977b2f6985f8d)` OverSIP::SIP::Modules` moved to `OverSIP::Modules`.


Version 1.1.2 (released in 2012-08-28)
--------------------------------------

- [(d91d2e4)](https://github.com/versatica/OverSIP/commit/d91d2e4899a777dd7dd101e83fe36a1bca744398) Require EventMachine-LE >= 1.1.3 which includes the `:use_tls` option for selecting TLSv1 or SSLv23 (fixes [#12](https://github.com/versatica/OverSIP/issues/12)).


================================================
FILE: Gemfile
================================================
source "http://rubygems.org"

gemspec

group :test do
  gem "rake", "~> 10.3.2"
end


================================================
FILE: LICENSE
================================================
Name: OverSIP
Maintainer: Iñaki Baz Castillo <ibc@aliax.net>
Copyright (c) 2012-2016 Iñaki Baz Castillo


License: The MIT License

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: README.md
================================================
<p align="center"><a href="http://oversip.versatica.com"><img src="http://oversip.versatica.com/images/oversip-banner.png"/></a></p>

[![Build Status](https://secure.travis-ci.org/versatica/OverSIP.png?branch=master)](http://travis-ci.org/versatica/OverSIP)

## Notice

This project is no longer maintained. If you wish to maintain it, contact the authors (see below).


## Website

* [www.oversip.versatica.com](http://www.oversip.versatica.com)


## Overview

OverSIP is a powerful and flexible SIP proxy & server by the authors of [RFC 7118](http://tools.ietf.org/html/rfc7118) (*The WebSocket Protocol as a Transport for SIP*):

* Works on Linux/BSD/OSX
* Fully asynchronous event-based design, never block!
* Enjoy coding your SIP logic in Ruby language, feel free to code whatever you need!
* Fast: core and message parsers written in C language
* SIP over UDP, TCP, TLS and WebSocket (use true SIP in your web apps)
* Full support for IPv4, IPv6 and DNS resolution (NAPTR, SRV, A, AAAA)
* The perfect Outbound Edge Proxy
* Written by the authors of [RFC 7118 "The WebSocket Protocol as a Transport for SIP"](http://tools.ietf.org/html/rfc7118) and [JsSIP](http://jssip.net)


## Documentation

* [www.oversip.versatica.com/documentation](http://www.oversip.versatica.com/documentation/)


## Authors

### Main Author

* Iñaki Baz Castillo (<ibc@aliax.net> | [github](https://github.com/ibc) | [twitter](https://twitter.com/ibc_tw))

### Contributors

* José Luis Millán (<jmillan@aliax.net> | [github](https://github.com/jmillan) | [twitter](https://twitter.com/jomivi))
* Saúl Ibarra Corretgé (<saghul@gmail.com> | [github](https://github.com/saghul) | [twitter](https://twitter.com/saghul))
* Jon Bonilla (<manwe@aholab.ehu.es> |  [github](https://github.com/manwe) | [twitter](https://twitter.com/jbmanwe))

## License

OverSIP is released under the [MIT license](http://www.oversip.versatica.com/license).


================================================
FILE: Rakefile
================================================
require "rake/testtask"
require "rake/clean"


OVERSIP_EXTENSIONS = [
  { :dir => "ext/sip_parser", :lib => "sip_parser.#{RbConfig::CONFIG["DLEXT"]}", :dest => "lib/oversip/sip" },
  { :dir => "ext/stun", :lib => "stun.#{RbConfig::CONFIG["DLEXT"]}", :dest => "lib/oversip" },
  { :dir => "ext/utils", :lib => "utils.#{RbConfig::CONFIG["DLEXT"]}", :dest => "lib/oversip" },
  { :dir => "ext/websocket_framing_utils", :lib => "ws_framing_utils.#{RbConfig::CONFIG["DLEXT"]}", :dest => "lib/oversip/websocket" },
  { :dir => "ext/websocket_http_parser", :lib => "ws_http_parser.#{RbConfig::CONFIG["DLEXT"]}", :dest => "lib/oversip/websocket" },
]

OVERSIP_EXTENSIONS.each do |ext|
  file ext[:lib] => Dir.glob(["#{ext[:dir]}/*{.c,.h}"]) do
    Dir.chdir(ext[:dir]) do
      ruby "extconf.rb"
      sh "make"
    end
    cp "#{ext[:dir]}/#{ext[:lib]}", "#{ext[:dest]}/"
  end

  CLEAN.include("#{ext[:dir]}/*{.o,.log,.so,.a,.bundle}")
  CLEAN.include("#{ext[:dir]}/Makefile")
  CLEAN.include("#{ext[:dest]}/#{ext[:lib]}")
end

# Stud stuff.
directory "tmp"
file "bin/oversip_stud" => "tmp" do
  Dir.chdir("ext/stud") do
    ruby "extconf.rb"
  end
  FileUtils.remove_dir "tmp"
end
CLEAN.include("ext/stud/Makefile")
CLEAN.include("thirdparty/stud/mkmf.log")
CLEAN.include("bin/oversip_stud")


OVERSIP_COMPILE_ITEMS = OVERSIP_EXTENSIONS.map {|e| e[:lib]} << "bin/oversip_stud"

task :default => :compile

desc "Compile"
task :compile => OVERSIP_COMPILE_ITEMS

Rake::TestTask.new do |t|
  t.libs << "test"
end

# Make the :test task depend on the shared object, so it will be built automatically
# before running the tests.
desc "Run tests"
task :test => OVERSIP_COMPILE_ITEMS


================================================
FILE: bin/oversip
================================================
#!/usr/bin/env ruby
# -*- encoding: binary -*-

unless RUBY_VERSION >= "1.9.2"
  raise ::LoadError, "OverSIP requires Ruby version >= 1.9.2 (current version is #{RUBY_VERSION})"
end

$LOAD_PATH.insert 0, File.expand_path(File.join(File.dirname(__FILE__), "../", "lib"))

# When OverSIP is executed automaticaly via the system init (i.e. after booting the host)
# the Encoding.default_external is US_ASCII which causes fails when reading daat from
# some files (i.e. the cacert.pem file which contains no valid US_ASCII symbols). So
# make the default external encoding UTF-8 right now.
::Encoding.default_external = ::Encoding::UTF_8

# First of all, trap some signals in order to ignore them if they arrive while
# loading server libraries.
[:HUP, :INT, :USR1, :USR2].each {|signal| trap(signal) {} }

require "optparse"
require "etc"
require "oversip"


module OverSIP

  class Executable
    extend ::OverSIP::Logger

    @log_id = "executable"

    def self.run
      $0 = ::File.basename(__FILE__)
      ::OverSIP::Logger.load_methods

      # Options by default.
      options = {
        :colorize => true
      }

      OptionParser.new("", 28, "  ") do |opts|
        opts.banner = "#{::OverSIP::DESCRIPTION}" \
                      "\n\nUsage: #{File.basename(__FILE__)} " \
                      "[#{::OverSIP::PROGRAM_NAME} options] [Ruby options]"

        opts.separator "\n#{::OverSIP::PROGRAM_NAME} options:"

        opts.on("-P", "--pid FILE", "Create a PID file (required)") do |value|
          options[:pid_file] = value
        end

        opts.on("-p", "--process-name NAME", "Change the running process name (default 'oversip')") do |value|
          options[:process_name] = value
          $0 = options[:process_name]
          ::OverSIP::Logger.load_methods
        end

        opts.on("--config-dir DIR", "Absolute path to the directory with user configuration files (default '/etc/oversip/')") do |value|
          options[:config_dir] = value
        end

        opts.on("--config-file FILE", "Name of the configuration file within the configuration directory (default 'oversip.conf')") do |value|
          options[:config_file] = value
        end

        opts.on("-u", "--user USER", "System user to run with") do |value|
          options[:user] = value
        end

        opts.on("-g", "--group GROUP", "System group to run with") do |value|
          options[:group] = value
        end

        opts.on("--no-color", "Don't colorize text printed in stdout") do |value|
          options[:colorize] = false
        end

        opts.separator "\nRuby options:"

        opts.on("-d", "--debug", "Set debugging flags ($DEBUG = true)") do
          $DEBUG = true
        end

        opts.on("-w", "--warn", "Turn warnings on ($-w = true)") do
          $-w = true
        end

        opts.on("-I", "--include PATH", "Add PATH to $LOAD_PATH (may be used more than once)") do |path|
          $LOAD_PATH.unshift(*path.split(/:/))
        end

        opts.on("-r", "--require LIBRARY", "Load LIBRARY before running the programm (may be used more than once)") do |library|
          require library
        end

        opts.separator "\nCommon options:"

        opts.on_tail("-h", "--help", "Show this message") do
          puts opts.to_s
          exit
        end

        opts.on_tail("-v", "--version", "Show version") do
          puts ::OverSIP::DESCRIPTION
          exit
        end

        begin
          opts.parse! ARGV
        rescue ::OptionParser::InvalidOption => e
          log_system_error e.message
          puts
          puts opts.to_s
          exit! 1
        rescue ::OptionParser::MissingArgument => e
          log_system_error e.message
          puts
          puts opts.to_s
          exit! 1
        end
      end

      log_system_notice "#{::OverSIP::PROGRAM_NAME} #{::OverSIP::VERSION} starting..."

      # Options checks.

      # PID file is required.
      unless options[:pid_file]
        ::OverSIP::Launcher.fatal "PID file is required (use -P or --pid option)"
      end

      # Ignore user/group if the launcher is not being running as root.
      unless ::Process.euid == 0
        if options[:user] or options[:group]
          log_system_warn "ignoring user/group parameters when not running as root"
        end

        options.delete :user
        options.delete :group
      else
        # Get the uid and gid to run with.
        if options[:user]
          begin
            ::Etc.getpwnam options[:user]
          rescue ::ArgumentError
            ::OverSIP::Launcher.fatal "user '#{options[:user]}' does not exist in the system"
          end
        end
        if options[:group]
          begin
            ::Etc.getgrnam options[:group]
          rescue ::ArgumentError
            ::OverSIP::Launcher.fatal "group '#{options[:group]}' does not exist in the system"
          end
        end
      end

      # Set the command name (as it appears in "ps" output) to given --process_name option (-p)
      # or to the script filename otherwise.
      ::OverSIP.master_name = options[:process_name] || ::File.basename(__FILE__)
      $0 = ::OverSIP.master_name
      log_system_info "process name: #{::OverSIP.master_name}"

      ::OverSIP::Config.load options[:config_dir], options[:config_file]
      ::OverSIP::Config.print options[:colorize]

      ::OverSIP::Logger::load_methods

      begin
        ::Process.setrlimit Process::RLIMIT_NOFILE, 65536, 65536
      rescue => e
        # ::OverSIP::Launcher.fatal e
        log_system_error "error increasing rlimits for 'nofiles': #{e.message} (#{e.class})"
      end

      ::OverSIP::Launcher.daemonize!(options)
      ::OverSIP::Launcher.run(options)

    end  # def run
  end  # class Executable
end  # module OverSIP


::OverSIP::Executable.run


================================================
FILE: create-deb.sh
================================================
#!/bin/bash

# Using this the generated stuf is clean after package is built.
# Options -us and -uc prevent the package from being signed.
dpkg-buildpackage -tc -us -uc

# Similar option. The second command cleans the generated stuf.
#debuild -us -uc
#./debian/rules clean

# Clean debian/files and the log file.
rm -f debian/files
rm -f debian/oversip.debhelper.log



================================================
FILE: debian/changelog
================================================
oversip (2.0.4) stable; urgency=high
  * Package for OverSIP Ruby Gem 2.0.4.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Fri, 19 Aug 2016 13:11:00 +0100

oversip (2.0.3) stable; urgency=low
  * Package for OverSIP Ruby Gem 2.0.3.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Fri, 29 Jan 2016 18:15:00 +0100

oversip (2.0.2) stable; urgency=low
  * Package for OverSIP Ruby Gem 2.0.2.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Fri, 29 Jan 2016 18:00:00 +0100

oversip (2.0.1) stable; urgency=low
  * Package for OverSIP Ruby Gem 2.0.1.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Tue, 24 Feb 2015 20:00:00 +0100

oversip (2.0.0) stable; urgency=low
  * Package for OverSIP Ruby Gem 2.0.0.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Wed, 24 Sep 2014 23:00:00 +0100

oversip (1.4.1) stable; urgency=low
  * Package for OverSIP Ruby Gem 1.4.1.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Mon, 16 Sep 2013 16:35:00 +0100

oversip (1.4.0) stable; urgency=low
  * Package for OverSIP Ruby Gem 1.4.0.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Sun, 15 Sep 2013 16:10:00 +0100

oversip (1.3.8) stable; urgency=low
  * Package for OverSIP Ruby Gem 1.3.8.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Thu, 16 May 2013 13:10:00 +0100

oversip (1.3.7) stable; urgency=low
  * Package for OverSIP Ruby Gem 1.3.7.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Mon, 28 Jan 2013 22:00:00 +0100

oversip (1.3.6) stable; urgency=low
  * Package for OverSIP Ruby Gem 1.3.6.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Thu, 03 Jan 2013 13:00:00 +0100

oversip (1.3.5) stable; urgency=low
  * Package for OverSIP Ruby Gem 1.3.5.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Mon, 17 Dec 2012 23:20:00 +0100

oversip (1.3.3) stable; urgency=low
  * Package for OverSIP Ruby Gem 1.3.3.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Thu, 15 Nov 2012 23:20:00 +0100

oversip (1.3.2) stable; urgency=low
  * Package for OverSIP Ruby Gem 1.3.2.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Sat, 03 Nov 2012 19:06:00 +0100

oversip (1.3.1) stable; urgency=high
  * Package for OverSIP Ruby Gem 1.3.1.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Thu, 04 Oct 2012 23:30:00 +0100

oversip (1.3.0) stable; urgency=low
  * Package for OverSIP Ruby Gem 1.3.0.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Thu, 04 Oct 2012 17:25:00 +0100

oversip (1.2.1) stable; urgency=high
  * Package for OverSIP Ruby Gem 1.2.1.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Thu, 06 Aug 2012 02:10:00 +0100

oversip (1.2.0) stable; urgency=low
  * Package for OverSIP Ruby Gem 1.2.X.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Tue, 04 Aug 2012 12:00:00 +0100

oversip (1.1.0) stable; urgency=low
  * Package for OverSIP Ruby Gem 1.1.X.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Fri, 03 Aug 2012 17:53:00 +0100

oversip (1.0.0) stable; urgency=low
  * Initial release.
 -- Iñaki Baz Castillo <ibc@aliax.net>  Mon, 09 Jul 2012 21:21:00 +0100


================================================
FILE: debian/compat
================================================
7


================================================
FILE: debian/control
================================================
Source: oversip
Section: comm
Priority: optional
Maintainer: Iñaki Baz Castillo <ibc@aliax.net>
Homepage: http://www.oversip.net
Build-Depends: debhelper (>= 7)
Standards-Version: 3.9.3

Package: oversip
Architecture: all
Pre-Depends: ${misc:Depends}, ruby (>= 1.9.3), ruby-dev (>= 1.9.3), make, g++, libssl-dev, libev-dev
Suggests: unbound
Description: OverSIP (the SIP framework you dreamed about)
  OverSIP is an async SIP proxy/server programmable in Ruby language.
  Some features of OverSIP are:
  - SIP transports: UDP, TCP, TLS and WebSocket.
  - Full IPv4 and IPv6 support.
  - RFC 3263: SIP DNS mechanism (NAPTR, SRV, A, AAAA) for failover and load
    balancing based on DNS.
  - RFC 5626: OverSIP is a perfect Outbound Edge Proxy, including an integrated
    STUN server.
  - Fully programmable in Ruby language (make SIP easy).
  - Fast and efficient: OverSIP core is coded in C language.
  OverSIP is build on top of EventMachine async library which follows the Reactor
  Design Pattern, allowing thousands of concurrent connections and requests in a
  never-blocking fashion.


================================================
FILE: debian/copyright
================================================
Name: OverSIP
Maintainer: Iñaki Baz Castillo <ibc@aliax.net>
Copyright (c) 2012-2016 Iñaki Baz Castillo <ibc@aliax.net>


License: The MIT License

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: debian/oversip.default
================================================
#
# oversip startup options
#

# Set to 'yes' when configured.
RUN=no

# User to run as.
USER=oversip

# Group to run as.
GROUP=oversip

# Directory with the configuration files.
# By default '/etc/oversip/'.
#CONFIG_DIR=/etc/oversip/

# Main configuration file name (within the configuration directory).
# By default 'oversip.conf'.
#CONFIG_FILE=oversip.conf


================================================
FILE: debian/oversip.init
================================================
#! /bin/sh

### BEGIN INIT INFO
# Provides:          oversip
# Required-Start:    $syslog $network $remote_fs
# Required-Stop:     $syslog $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop OverSIP
# Description:       Start/stop OverSIP
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/var/lib/gems/2.1.0/bin:/var/lib/gems/1.9.1/bin
DESC=OverSIP
HOMEDIR=/var/run/oversip
RUN=no
RUBY_GEM=oversip
RUBY_EXE=$(which ruby)

# Process name, it affects to the process name and PID file.
# The configuration file under /etc/default/ to read will also be called $NAME.
NAME=oversip


. /lib/lsb/init-functions

# Debian LSB functions don't add \n in function log_begin_msg().
# In Ubuntu such function is overriden in /etc/lsb-base-logging.sh.
UBUNTU_LOGGING=0
[ -r /etc/lsb-base-logging.sh ] && UBUNTU_LOGGING=1

[ -r /etc/default/$NAME ] && . /etc/default/$NAME


if [ "$1" != "stop" ] && [ "$1" != "status" ] ; then
  # Ensure that the admin has set RUN=yes in /etc/default/$NAME file.
  if [ "$RUN" != "yes" ] ; then
    log_failure_msg "$DESC ($NAME) not yet configured, set RUN=yes in /etc/default/$NAME"
    exit 0
  fi
fi

# Ensure Ruby executable is installed.
which $RUBY_EXE >/dev/null
if [ $? -ne 0 ] ; then
  log_failure_msg "ruby is not installed, exiting."
  log_end_msg 5
  exit 5
fi

# Check whether OverSIP Ruby Gem is installed and get the executable location.
DAEMON=$(which oversip)
if [ $? -ne 0 ] ; then
  log_failure_msg "$DESC ($NAME): Ruby Gem '$RUBY_GEM' is not installed."

  case "$1" in
  status)
    # LSB - 4: program or service status is unknown.
    log_end_msg 4
    exit 4
    ;;
  stop)
    exit 0
    ;;
  *)
    # LSB - 5: program is not installed.
    log_end_msg 5
    exit 5
    ;;
  esac
fi


PIDFILE="${HOMEDIR}/${NAME}.pid"
OPTIONS="-P ${PIDFILE} -p ${NAME}"

if [ -n "$USER" ]          ; then  OPTIONS="${OPTIONS} -u ${USER}"                       ; fi
if [ -n "$GROUP" ]         ; then  OPTIONS="${OPTIONS} -g ${GROUP}"                      ; fi
if [ -n "$CONFIG_DIR" ]    ; then  OPTIONS="${OPTIONS} --config-dir ${CONFIG_DIR}"       ; fi
if [ -n "$CONFIG_FILE" ]   ; then  OPTIONS="${OPTIONS} --config-file ${CONFIG_FILE}"     ; fi


check_homedir()
{
  # Create HOMEDIR directory in case it doesn't exist.
  # Useful in Ubuntu as /var/run/ content is deleted in shutdown.
  if [ ! -d $HOMEDIR ] ; then mkdir $HOMEDIR ; fi

  # Set the appropiate owner and group
  if [ -n "$USER" ] ; then chown ${USER} $HOMEDIR ; fi
  if [ -n "$GROUP" ] ; then chgrp ${GROUP} $HOMEDIR ; fi
}


# Return values:
# - 3: oversip is not running.
# - 0: oversip is running.
# - 1: oversip is not running but PID file exists.
get_status() {
  if [ ! -r "$PIDFILE" ]; then
    return 3
  fi
  if read pid < "$PIDFILE" && ps -p "$pid" > /dev/null 2>&1; then
    return 0
  else
    return 1
  fi
}


start() {
  set +e
  get_status
  case $? in
    0)  # Already running, do nothing.
      log_warning_msg "already running."
      exit 0
      ;;
    3)  # Not running, start it.
      ;;
    1)  # Not running but PID file exists, remove it and start.
      log_warning_msg "not running but PID file '$PIDFILE' exists, deleting it."
      rm "$PIDFILE"
      ;;
  esac

  start-stop-daemon --start --quiet --pidfile $PIDFILE --quiet \
    --exec $DAEMON -- $OPTIONS
  res=$?

  if [ $res -eq 0 ] ; then
    log_end_msg 0
    exit 0
  else
    if [ ! -r "$PIDFILE" ]; then
      log_failure_msg "error, failed to start."
      log_end_msg 1
      exit 1
    else
      log_failure_msg "error, failed to start (and PID file '$PIDFILE' exists)."
      log_end_msg 1
      exit 1
    fi
  fi
}


set -e

case "$1" in

  start)
    check_homedir
    log_daemon_msg "Starting $DESC ($NAME)"
    echo
    set +e

    start
    ;;

  stop)
    log_daemon_msg "Stopping $DESC ($NAME)"
    echo
    set +e

    start-stop-daemon --oknodo --stop --pidfile $PIDFILE --quiet
    res=$?

    if [ $res -eq 0 ] ; then
      log_end_msg 0
      exit 0
    else
      log_failure_msg "error, failed to stop."
      log_end_msg 1
      exit 1
    fi
    ;;

  restart|force-reload)
    log_daemon_msg "Restarting $DESC ($NAME)"
    echo
    set +e

    start-stop-daemon --oknodo --stop --pidfile $PIDFILE --retry=5 --quiet

    if [ $? -ne 0 ] ; then
      log_failure_msg "error, failed to stop."
      log_end_msg 1
      exit 1
    fi

    check_homedir
    start
    ;;

  status)
    set +e
    get_status
    case $? in
      3)  # Not running.
        log_begin_msg "$DESC ($NAME) is not running."
        [ $UBUNTU_LOGGING -eq 0 ] && echo
        exit 3
        ;;
      0)  # Running.
        log_begin_msg "$DESC ($NAME) is running."
        [ $UBUNTU_LOGGING -eq 0 ] && echo
        exit 0
        ;;
      1)  # Not running but PID file exists.
        log_warning_msg "$DESC ($NAME) is not running but PID file '$PIDFILE' exists."
        exit 1
        ;;
    esac
    ;;

  reload)
    set +e
    get_status
    case $? in
      3)  # Not running.
        log_begin_msg "$DESC ($NAME) is not running."
        [ $UBUNTU_LOGGING -eq 0 ] && echo
        exit 3
        ;;
      0)  # Running.
        log_begin_msg "$DESC ($NAME) reloading..."
        kill -s HUP "$pid"
        [ $UBUNTU_LOGGING -eq 0 ] && echo
        exit 0
        ;;
      1)  # Not running but PID file exists.
        log_warning_msg "$DESC ($NAME) is not running but PID file '$PIDFILE' exists."
        exit 1
        ;;
    esac
    ;;

  user-reload)
    set +e
    get_status
    case $? in
      3)  # Not running.
        log_begin_msg "$DESC ($NAME) is not running."
        [ $UBUNTU_LOGGING -eq 0 ] && echo
        exit 3
        ;;
      0)  # Running.
        log_begin_msg "$DESC ($NAME) user-reloading..."
        kill -s USR1 "$pid"
        [ $UBUNTU_LOGGING -eq 0 ] && echo
        exit 0
        ;;
      1)  # Not running but PID file exists.
        log_warning_msg "$DESC ($NAME) is not running but PID file '$PIDFILE' exists."
        exit 1
        ;;
    esac
    ;;

  *)
    log_failure_msg "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload|status|reload|user-reload}."
    exit 1
    ;;

esac


================================================
FILE: debian/postrm
================================================
#!/bin/bash

# Doc: http://wiki.debian.org/MaintainerScripts

#DEBHELPER#

case "$1" in

  purge)
    # Remove the Debian system user/group.
    deluser --quiet --remove-home oversip &>/dev/null || true

    # Remove the Ruby gem.
    echo "uninstalling 'oversip' Ruby Gem(s)..."
    gem uninstall oversip -a -x -I
    ;;

esac

exit 0

#DEBHELPER#


================================================
FILE: debian/preinst
================================================
#!/bin/bash

# Doc: http://wiki.debian.org/MaintainerScripts

#DEBHELPER#

set -e


OVERSIP_GEM_VERSION="2.0.4"


install_gem() {
  echo "installing 'oversip' Ruby Gem version $OVERSIP_GEM_VERSION..."
  gem install oversip --no-rdoc --no-ri -v $OVERSIP_GEM_VERSION
}

case "$1" in

  install)
    # Add a Debian system user/group called "oversip".
    adduser --quiet --system --group --disabled-password \
            --shell /bin/false --gecos "OverSIP" \
            --home /var/run/oversip oversip || true

    # Install the Ruby gem.
    install_gem
    ;;

  upgrade)
    # Install the Ruby gem.
    install_gem
    ;;

esac

exit 0

#DEBHELPER#


================================================
FILE: debian/rules
================================================
#!/usr/bin/make -f
# -*- makefile -*-

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

build: build-stamp

build-stamp:
	dh_testdir
	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -rf build-stamp oversip
	dh_prep

install: build
	dh_testdir
	dh_testroot
	dh_prep -k
	dh_installdirs /etc

	mkdir -p $(CURDIR)/debian/oversip/etc/oversip/
	mkdir -p $(CURDIR)/debian/oversip/etc/oversip/tls/
	mkdir -p $(CURDIR)/debian/oversip/etc/oversip/tls/ca/
	mkdir -p $(CURDIR)/debian/oversip/etc/oversip/tls/utils/
	
	install -m 644 etc/oversip.conf debian/oversip/etc/oversip/
	install -m 644 etc/proxies.conf debian/oversip/etc/oversip/
	install -m 644 etc/server.rb debian/oversip/etc/oversip/
	install -m 755 etc/tls/upgrade-cacert.sh debian/oversip/etc/oversip/tls/
	install -m 644 etc/tls/demo-tls.oversip.net.crt debian/oversip/etc/oversip/tls/
	install -m 600 etc/tls/demo-tls.oversip.net.key debian/oversip/etc/oversip/tls/
	install -m 644 etc/tls/ca/* debian/oversip/etc/oversip/tls/ca/
	install -m 755 etc/tls/utils/* debian/oversip/etc/oversip/tls/utils/

# Build architecture-dependent files here.
binary-arch: install
# We have nothing to do by default.

# Build architecture-independent files here.
binary-indep: install
	dh_testdir
	dh_testroot
	dh_installchangelogs
	dh_installdocs
	dh_installexamples
	dh_installman
	dh_installinit --restart-after-upgrade -- defaults 20
	dh_link
	dh_strip
	dh_compress
	dh_fixperms
	dh_installcron
#	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install


================================================
FILE: etc/oversip.conf
================================================
#
# OverSIP - Main Configuration.
#
#
# IMPORTANT:
#   This is a YAML [1] format configuration file. DON'T USE tab for indentation
#   as it's not allowed and would raise unexpected errors. Instead, respect
#   the existing indentation spaces.
#   [1] http://en.wikipedia.org/wiki/YAML


core:

  # DNS nameserver to use. Note that OverSIP requires a recursive DNS server
  # (recommended unbound: a DNS recursive and caching DNS resolver).
  # Value can be:
  # - An IPv4.
  # - An array of IPv4 (for failover).
  # - _null_: nameservers in /etc/resolv.conf are used.
  # Default value is _null_.
  #
  nameservers: null

  # Syslog facility. Can be "kern", "user", "daemon", "local0"..."local7".
  # By default "daemon".
  #
  syslog_facility: daemon

  # Syslog level. Can be "debug", "info", "notice", "warn", "error", "crit".
  # By default "info".
  #
  syslog_level: debug


sip:

  # Use SIP over UDP. By default _yes_.
  #
  sip_udp: yes

  # Use SIP over TCP. By default _yes_.
  #
  sip_tcp: yes

  # Use SIP over TLS. By default _yes_.
  #
  sip_tls: yes

  # Enable or disable IPv4. By default _yes_.
  #
  enable_ipv4: yes

  # IPv4 in which OverSIP listens for SIP messages. Using "0.0.0.0" is not
  # allowed.
  # - Use an IPv4 string for listening in that address.
  # - Use _null_ for IP autodiscovery.
  # Default value is _null_.
  #
  listen_ipv4: null

  # Advertised IPv4 for Via, Record-Route and Path headers.
  # Useful when OverSIP runs behind a NAT and must expose the router public
  # IPv4 to the outside.
  # Default value is _null_ which means that the local IPv4 is used.
  #
  advertised_ipv4: null

  # Enable or disable IPv6. By default _yes_.
  #
  enable_ipv6: yes

  # IPv6 in which OverSIP listens for SIP messages. Using "::" is not
  # allowed.
  # - Use an IPv6 string for listening in that address.
  # - Use _null_ for IP autodiscovery.
  # Default value is _null_.
  #
  listen_ipv6: null

  # Advertised IPv6 for Via, Record-Route and Path headers.
  # Useful when OverSIP runs behind a NAT and must expose the router public
  # IPv4 to the outside.
  # Default value is _null_ which means that the local IPv6 is used.
  #
  advertised_ipv6: null

  # Listening port for SIP over UDP and TCP.
  # By default 5060.
  #
  listen_port: 5060

  # Listening port for SIP over TLS.
  # By default 5061.
  #
  listen_port_tls: 5061

  # By enabling this option OverSIP does not listen in SIP TLS but, instead,
  # runs an instance of Stud TLS proxy which communicates with OverSIP using
  # plain TCP.
  # By default _yes_.
  #
  use_tls_tunnel: yes

  # The port which listens for TCP traffic from the Stud TLS proxy running in
  # this host.
  # By default 5062.
  #
  listen_port_tls_tunnel: 5062

  # Call the OverSIP::SipEvents.on_client_tls_handshake() callback when a SIP
  # client attemps a TLS handshake with OverSIP.
  # By default _yes_.
  #
  callback_on_client_tls_handshake: yes

  # Local domains OverSIP is responsible for.  Value can be:
  # - A domain.
  # - An array of domains.
  # - _null_: no one, just local IP's are matched as local destinations.
  # Default value is _null_.
  #
  # local domains: [ example.net, sip.example.org ]
  local_domains: null

  # TCP keepalive interval (in seconds).
  # When acting as a TCP server, OverSIP sends TCP packets with null data payload
  # as described in http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/.
  # If not set, TCP keepalive is disabled.
  # Minimun value is 180 seconds. Default value is _null_ (not enabled).
  #
  tcp_keepalive_interval: 300

  # Use a hostname for Record-Route/Path header when using TLS or WSS transports
  # over IPv4 (rather than using the server IP). This is good when a peer
  # sends us an in-dialog request via TLS so it could check whether the host part
  # of the top Route header matches a domain in the certificate we provide to it.
  # If not set, the server IPv4 will be used.
  # Default value is _null_ (IPv4 is used).
  #
  # record_route_hostname_tls_ipv4: outbound.example.net
  record_route_hostname_tls_ipv4: null

  # The same for IPv6.
  # If not set, the server IPv6 will be used.
  # Default value is _null_ (IPv6 is used).
  #
  # record_route_hostname_tls_ipv6: outbound.example.net
  record_route_hostname_tls_ipv6:  null


websocket:

  # Use SIP over WebSocket. By default _yes_.
  #
  sip_ws: yes

  # Use SIP over WebSocket with TLS. By default _yes_.
  #
  sip_wss: yes

  # Enable or disable IPv4. By default _yes_.
  #
  enable_ipv4: yes

  # IPv4 in which OverSIP listens for WebSocket messages. Using "0.0.0.0" is not
  # allowed.
  # - Use an IPv4 string for listening in that address.
  # - Use _null_ for IP autodiscovery.
  # Default value is _null_.
  #
  listen_ipv4: null

  # Advertised IPv4 for Via, Record-Route and Path headers.
  # Useful when OverSIP runs behind a NAT and must expose the router public
  # IPv4 to the outside.
  # Default value is _null_ which means that the local IPv4 is used.
  #
  advertised_ipv4: null

  # Enable or disable IPv6. By default _yes_.
  #
  enable_ipv6: yes

  # IPv6 in which OverSIP listens for SIP messages. Using "::" is not
  # allowed.
  # - Use an IPv6 string for listening in that address.
  # - Use _null_ for IP autodiscovery.
  # Default value is _null_.
  #
  listen_ipv6: null

  # Advertised IPv6 for Via, Record-Route and Path headers.
  # Useful when OverSIP runs behind a NAT and must expose the router public
  # IPv4 to the outside.
  # Default value is _null_ which means that the local IPv6 is used.
  #
  advertised_ipv6: null

  # Listening port for WebSocket over HTTP.
  # By default 10080.
  #
  listen_port: 10080

  # Listening port for WebSocket over HTTPS.
  # By default 10443.
  #
  listen_port_tls: 10443

  # By enabling this option OverSIP does not listen in WebSocket TLS but, instead,
  # runs an instance of Stud TLS proxy which communicates with OverSIP using
  # plain TCP.
  # By default _yes_.
  #
  use_tls_tunnel: yes

  # The port which listens for TCP traffic from the Stud TLS proxy running in
  # this host.
  # By default 10444.
  #
  listen_port_tls_tunnel: 10444

  # Call the OverSIP::WebSocketEvents.on_client_tls_handshake() callback when a WebSocket
  # client attemps a TLS handshake with OverSIP.
  # By default _yes_.
  #
  callback_on_client_tls_handshake: yes

  # WebSocket message max size (bytes). By default 65536.
  #
  max_ws_message_size: 65536

  # WebSocket frame max size (bytes). By default 65536.
  #
  max_ws_frame_size: 65536

  # WebSocket PING frames interval (in seconds).
  # If set, OverSIP sends WebSocket PING control frames as the given interval.
  # Minimun value is 180. Default value is _null_.
  #
  ws_keepalive_interval: 300


# TLS parameters affect to any interface of OverSIP using TLS, including SIP and WebSocket.
tls:

  # Server TLS public certificate. It must be the name of a readable file containing a
  # chain of X509 certificates in PEM format, with the most-resolved certificate at the
  # top of the file, successive intermediate certs in the middle, and the root (or CA)
  # cert at the bottom.
  # If not set, TLS is disabled. Default value is _null_.
  # If a relative path is given, it's searched under the tls/ directoy in the OverSIP
  # configuration directory (typically /etc/oversip/).
  #
  public_cert: demo-tls.oversip.net.crt

  # Server TLS private certificate. It must be the name of a readable file containing a
  # private key in the PEM format.
  # If not set, TLS is disabled. Default value is _null_.
  # If a relative path is given, it's searched under the tls/ directoy in the OverSIP
  # configuration directory (typically /etc/oversip/).
  # NOTE: The private key MUST NOT require password.
  #
  private_cert: demo-tls.oversip.net.key

  # Directory of TLS CAs. It must be the name of a readable directory. Every file in
  # that directory will be inspected and every X509 certificate in PEM format extracted.
  # This is useful for storing the list of trusted CAs (i.e. http://curl.haxx.se/ca/cacert.pem)
  # or CAs not in a standard trust hierarchy.
  # This is *required* for validating certificates provided by remote peers.
  # If _null_ this feature is dssabled. Default value is _null_.
  # If a relative path is given, it's searched under the tls/ directoy in the OverSIP
  # configuration directory (typically /etc/oversip/).
  #
  ca_dir: ca/


================================================
FILE: etc/proxies.conf
================================================
#
# OverSIP - Proxies Configuration.
#
#
# IMPORTANT:
#   This is a YAML [1] format configuration file. DON'T USE tab for indentation
#   as it's not allowed and would raise unexpected errors. Instead, respect
#   the existing indentation spaces.
#   [1] http://en.wikipedia.org/wiki/YAML


# Default proxy configuration.
#
default_proxy:

  # For initial INVITE, SUBSCRIBE and REFER requests and in-dialog NOTIFY the proxy adds Record-Route header(s).
  # For REGISTER requests the proxy adds Path header(s).
  # By default _yes_.
  #
  do_record_routing: yes

  # Enable DNS cache. By default _yes_.
  #
  use_dns_cache: yes

  # DNS cache time (in seconds). A DNS result is removed from the cache after the given time.
  # Minimum value is 300. Default value is 300.
  #
  dns_cache_time: 300

  # Enable destination blacklist. When a destination (target) fails due to timeout, connection error
  # or TLS validation error, the target is added to a temporal blacklist and requests to same
  # targets are not tryed again until the entry in the blacklist expires. By default _yes_.
  #
  use_blacklist: yes

  # Blacklist expiration time (in seconds). The time of live of failed targets within the blacklist.
  #
  blacklist_time: 400

  # Use DNS NAPTR. If set, NAPTR query is performed when URI host is a domain, has no port nor
  # ;transport param.
  # Default value is _yes_.
  #
  use_naptr: yes

  # Use DNS SRV. If set, SRV query is performed when URI host is a domain and has no port.
  # If this is set to _no_ then _use_naptr_ is also set to _no_.
  # Default value is _yes_.
  #
  use_srv: yes

  # Transport preference. The list of supported transports in order of preference.
  # When there is NAPTR record, its SRV records are tryed in this order just in the case
  # _force_transport_preference_ is _yes_.
  # If there is not NAPTR record, SRV records are then tryed in this order.
  # Valid transports are "udp", "tcp" and "tls".
  # Default value is ["tls", "tcp", "udp"] (first try "tls").
  #
  transport_preference: ["tls", "tcp", "udp"]

  # Force transport preference. If _no_, transport preference is taken from NAPTR records
  # (when present). If _yes_, transport preferences are taken from transport_preference
  # parameter even for NAPTR records.
  # Default value is _no_.
  #
  force_transport_preference: no

  # IP type preference. When both IPv4 and IPv6 are available, this parameter determines
  # whether to try first DNS A or AAAA queries. It also determines the IP type this proxy
  # is allowed to use for routing requests.
  # Valid IP types are "ipv4" and "ipv6".
  # Default value is ["ipv4", "ipv6"] (first try "ipv4").
  #
  ip_type_preference: ["ipv4", "ipv6"]

  # DNS failover on received 503.
  # If a DNS query retrieves more than a single destinations and the first attempt
  # receives a 503 response, then OverSIP tries the next destination (when this parameter
  # is set) or replies a 500 error upstream (when not set).
  # Default value is _yes_.
  #
  dns_failover_on_503: yes

  # INVITE transaction timeout (in seconds).
  # Time waiting for a provisional or final response.
  # Minimum value is 2, maximum value is 64.
  # Default value is 32.
  #
  timer_B: 32

  # Proxy INVITE transaction timeout (in seconds).
  # Time waiting for a final response.
  # Minimum value is 8, maximum value is 180.
  # Default value is 120.
  #
  timer_C: 120

  # Non-INVITE transaction timeout (in seconds).
  # Time waiting for a final response.
  # Minimum value is 2, maximum value is 64.
  # Default value is 32.
  #
  timer_F: 32

  # Call the OverSIP::SIP.on_server_tls_handshake() callback when
  # establishing an outbound SIP TLS connection with a remote SIP peer.
  # By default _yes_.
  #
  callback_on_server_tls_handshake: yes


# Proxy configuration for routing in-dialog requests.
#
proxy_in_dialog:

  use_dns: yes
  use_dns_cache: yes
  dns_cache_time: 300
  use_naptr: no
  use_srv: no
  timer_B: 32
  timer_C: 60
  timer_F: 32


# Proxy configuration for routing initial requests to clients.
proxy_to_users:

  use_dns: no
  dns_failover_on_503: no
  timer_B: 32
  timer_F: 32


# Proxy configuration for routing initial requests to the external world.
proxy_out:

  dns_failover_on_503: yes
  timer_B: 6
  timer_C: 60
  timer_F: 6


# Add your own proxy configurations here and/or replace the above ones.


================================================
FILE: etc/server.rb
================================================
# coding: utf-8

#
# OverSIP - Server Logic.
#




### Custom Application Code:


# Define here your custom code for the application running on top of OverSIP.
# Here you can load thirdy-party libraries and so on.
#
# require "some-gem"
#
module MyExampleApp
  extend ::OverSIP::Logger

  class << self
    attr_reader :do_outbound_mangling, :do_user_assertion
  end

  # Set this to _true_ if the SIP registrar behind OverSIP does not support Path.
  # OverSIP::Modules::OutboundMangling methods will be used.
  @do_outbound_mangling = true

  # Set this to _true_ if the SIP proxy/server behind OverSIP performing the authentication
  # is ready to accept a P-Asserted-Identity header from OverSIP indicating the already
  # asserted SIP user of the client's connection (this avoids authenticating all the requests
  # but the first one).
  # OverSIP::Modules::UserAssertion methods will be used.
  @do_user_assertion = true
end




### OverSIP System Events:


# This method is called when the main configuration files have been loaded.
# Place here 3rd party modules initializer code.
# This method is not executed again when OverSIP is reloaded (HUP signal).
#
# def (OverSIP::SystemEvents).on_initialize
#   [...]
# end


# This method is called once the OverSIP reactor has been started.
#
# def (OverSIP::SystemEvents).on_started
#   [...]
# end


# This method is called when a USR1 signal is received by OverSIP main
# process and allows the user to set custom code to be executed
# or reloaded.
#
# def (OverSIP::SystemEvents).on_user_reload
#   [...]
# end


# This method is called after OverSIP has been terminated. It's called
# with argument "error" which is _true_ in case OverSIP has died in an
# unexpected way.
#
# def (OverSIP::SystemEvents).on_terminated error
#   [...]
# end




### OverSIP SIP Events:


# This method is called when a SIP request is received.
#
def (OverSIP::SipEvents).on_request request

  log_info "#{request.sip_method} from #{request.from.uri} (UA: #{request.header("User-Agent")}) to #{request.ruri} via #{request.transport.upcase} #{request.source_ip} : #{request.source_port}"

  # Check Max-Forwards value (max 10).
  return unless request.check_max_forwards 10

  # Assume all the traffic is from clients and help them with NAT issues
  # by forcing rport usage and Outbound mechanism.
  request.fix_nat

  # In-dialog requests.
  if request.in_dialog?
    if request.loose_route
      log_debug "proxying in-dialog #{request.sip_method}"
      proxy = ::OverSIP::SIP::Proxy.new :proxy_in_dialog
      proxy.route request
    else
      unless request.sip_method == :ACK
        log_notice "forbidden in-dialog request without top Route pointing to us => 403"
        request.reply 403, "forbidden in-dialog request without top Route pointing to us"
      else
        log_notice "ignoring not loose routing ACK"
      end
    end
    return
  end

  # Initial requests.

  # Check that the request does not contain a top Route pointing to another server.
  if request.loose_route
    unless request.sip_method == :ACK
      log_notice "pre-loaded Route not allowed here => 403"
      request.reply 403, "Pre-loaded Route not allowed"
    else
      log_notice "ignoring ACK initial request"
    end
    return
  end

  if MyExampleApp.do_outbound_mangling
    # Extract the Outbound flow token from the RURI.
    ::OverSIP::Modules::OutboundMangling.extract_outbound_from_ruri request
  end

  # The request goes to a client using Outbound through OverSIP.
  if request.incoming_outbound_requested?
    log_info "routing initial request to an Outbound client"

    proxy = ::OverSIP::SIP::Proxy.new :proxy_to_users

    proxy.on_success_response do |response|
      log_info "incoming Outbound on_success_response: #{response.status_code} '#{response.reason_phrase}'"
    end

    proxy.on_failure_response do |response|
      log_info "incoming Outbound on_failure_response: #{response.status_code} '#{response.reason_phrase}'"
    end

    # on_error() occurs when no SIP response was received fom the peer and, instead, we
    # got some other internal error (timeout, connection error, DNS error....).
    proxy.on_error do |status, reason|
      log_notice "incoming Outbound on_error: #{status} '#{reason}'"
    end

    # Route the request and return.
    proxy.route request
    return
  end

  # An initial request with us (OverSIP) as final destination, ok, received, bye...
  if request.destination_myself?
    log_info "request for myself => 404"
    request.reply 404, "Ok, I'm here"
    return
  end

  # An outgoing initial request.
  case request.sip_method

  when :INVITE, :MESSAGE, :OPTIONS, :SUBSCRIBE, :PUBLISH, :REFER

    if MyExampleApp.do_user_assertion
      ::OverSIP::Modules::UserAssertion.add_pai request
    end

    proxy = ::OverSIP::SIP::Proxy.new :proxy_out

    proxy.on_provisional_response do |response|
      log_info "on_provisional_response: #{response.status_code} '#{response.reason_phrase}'"
    end

    proxy.on_success_response do |response|
      log_info "on_success_response: #{response.status_code} '#{response.reason_phrase}'"
    end

    proxy.on_failure_response do |response|
      log_info "on_failure_response: #{response.status_code} '#{response.reason_phrase}'"
    end

    proxy.on_error do |status, reason|
      log_notice "on_error: #{status} '#{reason}'"
    end

    proxy.on_invite_timeout do
      log_notice "INVITE timeout, no final response before Timer C expires."
    end

    proxy.route request
    return

  when :REGISTER

    proxy = ::OverSIP::SIP::Proxy.new :proxy_out

    if MyExampleApp.do_outbound_mangling
      # Contact mangling for the case in which the registrar does not support Path.
      ::OverSIP::Modules::OutboundMangling.add_outbound_to_contact proxy
    end

    proxy.on_success_response do |response|
      if MyExampleApp.do_user_assertion
        # The registrar replies 200 after a REGISTER with credentials so let's assert
        # the current SIP user to this connection.
        ::OverSIP::Modules::UserAssertion.assert_connection response
      end
    end

    proxy.on_failure_response do |response|
      if MyExampleApp.do_user_assertion
        # We don't add PAI for re-REGISTER, so 401 will be replied, and after it let's
        # revoke the current user assertion (will be re-added upon REGISTER with credentials).
        ::OverSIP::Modules::UserAssertion.revoke_assertion response
      end
    end

    proxy.route request
    return

  else

    log_info "method #{request.sip_method} not implemented => 501"
    request.reply 501, "Not Implemented"
    return

  end

end


# This method is called when a client initiates a SIP TLS handshake.
def (OverSIP::SipEvents).on_client_tls_handshake connection, pems

  log_info "validating TLS connection from IP #{connection.remote_ip} and port #{connection.remote_port}"

  cert, validated, tls_error, tls_error_string = ::OverSIP::TLS.validate pems
  identities = ::OverSIP::TLS.get_sip_identities cert

  if validated
    log_info "client provides a valid TLS certificate with SIP identities #{identities}"
  else
    log_notice "client provides an invalid TLS certificate with SIP identities #{identities} (TLS error: #{tls_error.inspect}, description: #{tls_error_string.inspect})"
    #connection.close
  end

end


# This method is called when conntacting a SIP TLS server and the TLS handshake takes place.
def (OverSIP::SipEvents).on_server_tls_handshake connection, pems

  log_info "validating TLS connection to IP #{connection.remote_ip} and port #{connection.remote_port}"

  cert, validated, tls_error, tls_error_string = ::OverSIP::TLS.validate pems
  identities = ::OverSIP::TLS.get_sip_identities cert

  if validated
    log_info "server provides a valid TLS certificate with SIP identities #{identities}"
  else
    log_notice "server provides an invalid TLS certificate with SIP identities #{identities} (TLS error: #{tls_error.inspect}, description: #{tls_error_string.inspect})"
    #connection.close
  end

end




### OverSIP WebSocket Events:


# This method is called when a new WebSocket connection is being requested.
# Here you can inspect the connection and the HTTP GET request. If you
# decide not to accept this connection then call to:
#
#   connection.http_reject(status_code, reason_phrase=nil, extra_headers=nil)
#
# You can also set variables for this connection via the connection.cvars
# Hash. Later you can access to this Hash in SIP requests from this connection
# by retrieving request.cvars attribute.
#
# def (OverSIP::WebSocketEvents).on_connection connection, http_request
#   [...]
# end


# This method is called when a WebSocket connection is closed. The connection
# is given as first argument along with a second argument "client_closed" which
# is _true_ in case the WebSocket connection was closed by the client.
#
# def (OverSIP::WebSocketEvents).on_disconnection connection, client_closed
#   [...]
# end


# This method is called when a client initiates a WebSocket TLS handshake.
def (OverSIP::WebSocketEvents).on_client_tls_handshake connection, pems

  log_info "validating TLS connection from IP #{connection.remote_ip} and port #{connection.remote_port}"

  cert, validated, tls_error, tls_error_string = ::OverSIP::TLS.validate pems
  identities = ::OverSIP::TLS.get_sip_identities cert

  if validated
    log_info "client provides a valid TLS certificate with SIP identities #{identities}"
  else
    log_notice "client provides an invalid TLS certificate with SIP identities #{identities} (TLS error: #{tls_error.inspect}, description: #{tls_error_string.inspect})"
    #connection.close
  end

end


================================================
FILE: etc/tls/ca/cacert.pem
================================================
##
## Bundle of CA Root Certificates
##
## Certificate data from Mozilla downloaded on: Wed Sep  3 03:12:03 2014
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
## file (certdata.txt).  This file can be found in the mozilla source tree:
## http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
##
## It contains the certificates in PEM format and therefore
## can be directly used with curl / libcurl / php_curl, or with
## an Apache+mod_ssl webserver for SSL client authentication.
## Just configure this file as the SSLCACertificateFile.
##
## Conversion done with mk-ca-bundle.pl verison 1.22.
## SHA1: c4540021427a6fa29e5f50db9f12d48c97d33889
##


GTE CyberTrust Global Root
==========================
-----BEGIN CERTIFICATE-----
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
-----END CERTIFICATE-----

Thawte Server CA
================
-----BEGIN CERTIFICATE-----
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
-----END CERTIFICATE-----

Thawte Premium Server CA
========================
-----BEGIN CERTIFICATE-----
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
UCemDaYj+bvLpgcUQg==
-----END CERTIFICATE-----

Equifax Secure CA
=================
-----BEGIN CERTIFICATE-----
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
70+sB3c4
-----END CERTIFICATE-----

Verisign Class 3 Public Primary Certification Authority - G2
============================================================
-----BEGIN CERTIFICATE-----
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
-----END CERTIFICATE-----

GlobalSign Root CA
==================
-----BEGIN CERTIFICATE-----
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
-----END CERTIFICATE-----

GlobalSign Root CA - R2
=======================
-----BEGIN CERTIFICATE-----
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
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-----

Verisign Class 4 Public Primary Certification Authority - G3
============================================================
-----BEGIN CERTIFICATE-----
MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
-----END CERTIFICATE-----

Entrust.net Premium 2048 Secure Server CA
=========================================
-----BEGIN CERTIFICATE-----
MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ
KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy
T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT
J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e
nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE=
-----END CERTIFICATE-----

Baltimore CyberTrust Root
=========================
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
-----END CERTIFICATE-----

Equifax Secure Global eBusiness CA
==================================
-----BEGIN CERTIFICATE-----
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
-----END CERTIFICATE-----

Equifax Secure eBusiness CA 1
=============================
-----BEGIN CERTIFICATE-----
MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
KpYrtWKmpj29f5JZzVoqgrI3eQ==
-----END CERTIFICATE-----

AddTrust Low-Value Services Root
================================
-----BEGIN CERTIFICATE-----
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
-----END CERTIFICATE-----

AddTrust External Root
======================
-----BEGIN CERTIFICATE-----
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
-----END CERTIFICATE-----

AddTrust Public Services Root
=============================
-----BEGIN CERTIFICATE-----
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
-----END CERTIFICATE-----

AddTrust Qualified Certificates Root
====================================
-----BEGIN CERTIFICATE-----
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
-----END CERTIFICATE-----

Entrust Root Certification Authority
====================================
-----BEGIN CERTIFICATE-----
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
-----END CERTIFICATE-----

RSA Security 2048 v3
====================
-----BEGIN CERTIFICATE-----
MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
pKnXwiJPZ9d37CAFYd4=
-----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 Global CA 2
====================
-----BEGIN CERTIFICATE-----
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
H4z1Ir+rzoPz4iIprn2DQKi6bA==
-----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-----

America Online Root Certification Authority 1
=============================================
-----BEGIN CERTIFICATE-----
MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
-----END CERTIFICATE-----

America Online Root Certification Authority 2
=============================================
-----BEGIN CERTIFICATE-----
MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
-----END CERTIFICATE-----

Visa eCommerce Root
===================
-----BEGIN CERTIFICATE-----
MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
398znM/jra6O1I7mT1GvFpLgXPYHDw==
-----END CERTIFICATE-----

Certum Root CA
==============
-----BEGIN CERTIFICATE-----
MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
-----END CERTIFICATE-----

Comodo AAA Services root
========================
-----BEGIN CERTIFICATE-----
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
-----END CERTIFICATE-----

Comodo Secure Services root
===========================
-----BEGIN CERTIFICATE-----
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
RR3B7Hzs/Sk=
-----END CERTIFICATE-----

Comodo Trusted Services root
============================
-----BEGIN CERTIFICATE-----
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
9y5Xt5hwXsjEeLBi
-----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-----
MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx
ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6
XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk
lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB
lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy
lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt
66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn
wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh
D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy
BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie
J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud
DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU
a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv
Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3
UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm
VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK
+JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW
IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1
WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X
f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II
4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8
VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
-----END CERTIFICATE-----

QuoVadis Root CA 3
==================
-----BEGIN CERTIFICATE-----
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
-----END CERTIFICATE-----

Security Communication Root CA
==============================
-----BEGIN CERTIFICATE-----
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
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-----

Staat der Nederlanden Root CA
=============================
-----BEGIN CERTIFICATE-----
MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
-----END CERTIFICATE-----

UTN DATACorp SGC Root CA
========================
-----BEGIN CERTIFICATE-----
MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
-----END CERTIFICATE-----

UTN USERFirst Hardware Root CA
==============================
-----BEGIN CERTIFICATE-----
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
nfhmqA==
-----END CERTIFICATE-----

Camerfirma Chambers of Commerce Root
====================================
-----BEGIN CERTIFICATE-----
MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
erfutGWaIZDgqtCYvDi1czyL+Nw=
-----END CERTIFICATE-----

Camerfirma Global Chambersign Root
==================================
-----BEGIN CERTIFICATE-----
MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
-----END CERTIFICATE-----

NetLock Notary (Class A) Root
=============================
-----BEGIN CERTIFICATE-----
MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
8CgHrTwXZoi1/baI
-----END CERTIFICATE-----

XRamp Global CA Root
====================
-----BEGIN CERTIFICATE-----
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
-----END CERTIFICATE-----

Go Daddy Class 2 CA
===================
-----BEGIN CERTIFICATE-----
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
vZ8=
-----END CERTIFICATE-----

Starfield Class 2 CA
====================
-----BEGIN CERTIFICATE-----
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
QBFGmh95DmK/D5fs4C8fF5Q=
-----END CERTIFICATE-----

StartCom Certification Authority
================================
-----BEGIN CERTIFICATE-----
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
g14=
-----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-----

Swisscom Root CA 1
==================
-----BEGIN CERTIFICATE-----
MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
NY6E0F/6MBr1mmz0DlP5OlvRHA==
-----END CERTIFICATE-----

DigiCert Assured ID Root CA
===========================
-----BEGIN CERTIFICATE-----
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
-----END CERTIFICATE-----

DigiCert Global Root CA
=======================
-----BEGIN CERTIFICATE-----
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
-----END CERTIFICATE-----

DigiCert High Assurance EV Root CA
==================================
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
-----END CERTIFICATE-----

Certplus Class 2 Primary CA
===========================
-----BEGIN CERTIFICATE-----
MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
l7+ijrRU
-----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-----

DST ACES CA X6
==============
-----BEGIN CERTIFICATE-----
MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
oKfN5XozNmr6mis=
-----END CERTIFICATE-----

TURKTRUST Certificate Services Provider Root 1
==============================================
-----BEGIN CERTIFICATE-----
MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
-----END CERTIFICATE-----

TURKTRUST Certificate Services Provider Root 2
==============================================
-----BEGIN CERTIFICATE-----
MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
UrbnBEI=
-----END CERTIFICATE-----

SwissSign Gold CA - G2
======================
-----BEGIN CERTIFICATE-----
MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw
EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN
MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp
c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq
t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C
jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg
vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF
ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR
AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend
jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO
peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR
7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi
GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw
AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64
OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm
5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr
44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf
Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m
Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp
mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk
vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf
KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br
NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj
viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
-----END CERTIFICATE-----

SwissSign Silver CA - G2
========================
-----BEGIN CERTIFICATE-----
MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT
BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3
aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG
9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644
N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm
+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH
6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu
MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h
qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5
FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs
ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc
celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X
CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB
tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P
4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F
kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L
3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx
/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa
DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP
e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu
WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ
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-----
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
-----END CERTIFICATE-----

Secure Global CA
================
-----BEGIN CERTIFICATE-----
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
-----END CERTIFICATE-----

COMODO Certification Authority
==============================
-----BEGIN CERTIFICATE-----
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
-----END CERTIFICATE-----

Network Solutions Certificate Authority
=======================================
-----BEGIN CERTIFICATE-----
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
-----END CERTIFICATE-----

WellsSecure Public Root Certificate Authority
=============================================
-----BEGIN CERTIFICATE-----
MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
tylv2G0xffX8oRAHh84vWdw+WNs=
-----END CERTIFICATE-----

COMODO ECC Certification Authority
==================================
-----BEGIN CERTIFICATE-----
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
-----END CERTIFICATE-----

IGC/A
=====
-----BEGIN CERTIFICATE-----
MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
0mBWWg==
-----END CERTIFICATE-----

Security Communication EV RootCA1
=================================
-----BEGIN CERTIFICATE-----
MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
-----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-----

Microsec e-Szigno Root CA
=========================
-----BEGIN CERTIFICATE-----
MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
-----END CERTIFICATE-----

Certigna
========
-----BEGIN CERTIFICATE-----
MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
-----END CERTIFICATE-----

TC TrustCenter Class 2 CA II
============================
-----BEGIN CERTIFICATE-----
MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
vQ==
-----END CERTIFICATE-----

TC TrustCenter Class 3 CA II
============================
-----BEGIN CERTIFICATE-----
MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
5A==
-----END CERTIFICATE-----

TC TrustCenter Universal CA I
=============================
-----BEGIN CERTIFICATE-----
MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
-----END CERTIFICATE-----

Deutsche Telekom Root CA 2
==========================
-----BEGIN CERTIFICATE-----
MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
Cm26OWMohpLzGITY+9HPBVZkVw==
-----END CERTIFICATE-----

ComSign Secured CA
==================
-----BEGIN CERTIFICATE-----
MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
-----END CERTIFICATE-----

Cybertrust Global Root
======================
-----BEGIN CERTIFICATE-----
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
-----END CERTIFICATE-----

ePKI Root Certification Authority
=================================
-----BEGIN CERTIFICATE-----
MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG
EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg
Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx
MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq
MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs
IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi
lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv
qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX
12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O
WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+
ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao
lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/
vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi
Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi
MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0
1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq
KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV
xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP
NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r
GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE
xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx
gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy
sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD
BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw=
-----END CERTIFICATE-----

T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
=============================================================================================================================
-----BEGIN CERTIFICATE-----
MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
-----END CERTIFICATE-----

Buypass Class 2 CA 1
====================
-----BEGIN CERTIFICATE-----
MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
-----END CERTIFICATE-----

Buypass Class 3 CA 1
====================
-----BEGIN CERTIFICATE-----
MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
-----END CERTIFICATE-----

EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
==========================================================================
-----BEGIN CERTIFICATE-----
MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg
QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe
Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p
ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt
IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by
X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b
gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr
eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ
TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy
Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn
uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI
qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm
ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0
Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW
Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t
FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm
zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k
XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT
bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU
RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK
1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt
2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ
Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9
AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT
-----END CERTIFICATE-----

certSIGN ROOT CA
================
-----BEGIN CERTIFICATE-----
MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
-----END CERTIFICATE-----

CNNIC ROOT
==========
-----BEGIN CERTIFICATE-----
MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
mxE=
-----END CERTIFICATE-----

ApplicationCA - Japanese Government
===================================
-----BEGIN CERTIFICATE-----
MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
rosot4LKGAfmt1t06SAZf7IbiVQ=
-----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
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB
Download .txt
gitextract_ue3_qfqk/

├── .gitignore
├── .travis.yml
├── AUTHORS
├── CHANGELOG.md
├── Gemfile
├── LICENSE
├── README.md
├── Rakefile
├── bin/
│   └── oversip
├── create-deb.sh
├── debian/
│   ├── changelog
│   ├── compat
│   ├── control
│   ├── copyright
│   ├── oversip.default
│   ├── oversip.init
│   ├── postrm
│   ├── preinst
│   └── rules
├── etc/
│   ├── oversip.conf
│   ├── proxies.conf
│   ├── server.rb
│   └── tls/
│       ├── ca/
│       │   └── cacert.pem
│       ├── demo-tls.oversip.net.crt
│       ├── demo-tls.oversip.net.key
│       ├── upgrade-cacert.sh
│       └── utils/
│           ├── create-cert.rb
│           └── get-sip-identities.rb
├── ext/
│   ├── common/
│   │   ├── c_util.h
│   │   └── ruby_c_util.h
│   ├── sip_parser/
│   │   ├── common_headers.h
│   │   ├── compile_ragel_files.sh
│   │   ├── compile_ragel_sip_message_parser.sh
│   │   ├── compile_ragel_sip_uri_parser.sh
│   │   ├── ext_help.h
│   │   ├── extconf.rb
│   │   ├── grammar_absolute_uri.rl
│   │   ├── grammar_name_addr.rl
│   │   ├── grammar_sip_core.rl
│   │   ├── grammar_sip_headers.rl
│   │   ├── grammar_sip_message.rl
│   │   ├── grammar_sip_uri.rl
│   │   ├── grammar_tel_uri.rl
│   │   ├── sip_message_parser.c
│   │   ├── sip_message_parser.rl
│   │   ├── sip_parser.h
│   │   ├── sip_parser_ruby.c
│   │   ├── sip_uri_parser.c
│   │   └── sip_uri_parser.rl
│   ├── stud/
│   │   └── extconf.rb
│   ├── stun/
│   │   ├── ext_help.h
│   │   ├── extconf.rb
│   │   └── stun_ruby.c
│   ├── utils/
│   │   ├── compile_ragel_files.sh
│   │   ├── ext_help.h
│   │   ├── extconf.rb
│   │   ├── grammar_ip.rl
│   │   ├── haproxy_protocol.c
│   │   ├── haproxy_protocol.h
│   │   ├── haproxy_protocol.rl
│   │   ├── ip_utils.c
│   │   ├── ip_utils.h
│   │   ├── ip_utils.rl
│   │   ├── outbound_utils.c
│   │   ├── outbound_utils.h
│   │   ├── outbound_utils.rl
│   │   ├── utils_ruby.c
│   │   └── utils_ruby.h
│   ├── websocket_framing_utils/
│   │   ├── ext_help.h
│   │   ├── extconf.rb
│   │   ├── ws_framing_utils.h
│   │   └── ws_framing_utils_ruby.c
│   └── websocket_http_parser/
│       ├── compile_ragel_files.sh
│       ├── ext_help.h
│       ├── extconf.rb
│       ├── grammar_ws_http_core.rl
│       ├── grammar_ws_http_headers.rl
│       ├── grammar_ws_http_request.rl
│       ├── ws_http_parser.c
│       ├── ws_http_parser.h
│       ├── ws_http_parser.rl
│       └── ws_http_parser_ruby.c
├── lib/
│   ├── oversip/
│   │   ├── config.rb
│   │   ├── config_validators.rb
│   │   ├── default_server.rb
│   │   ├── errors.rb
│   │   ├── fiber_pool.rb
│   │   ├── launcher.rb
│   │   ├── logger.rb
│   │   ├── modules/
│   │   │   ├── outbound_mangling.rb
│   │   │   └── user_assertion.rb
│   │   ├── proxies_config.rb
│   │   ├── ruby_ext/
│   │   │   └── eventmachine.rb
│   │   ├── sip/
│   │   │   ├── client.rb
│   │   │   ├── client_transaction.rb
│   │   │   ├── constants.rb
│   │   │   ├── core.rb
│   │   │   ├── launcher.rb
│   │   │   ├── listeners/
│   │   │   │   ├── connection.rb
│   │   │   │   ├── ipv4_tcp_client.rb
│   │   │   │   ├── ipv4_tcp_server.rb
│   │   │   │   ├── ipv4_tls_client.rb
│   │   │   │   ├── ipv4_tls_server.rb
│   │   │   │   ├── ipv4_tls_tunnel_server.rb
│   │   │   │   ├── ipv4_udp_server.rb
│   │   │   │   ├── ipv6_tcp_client.rb
│   │   │   │   ├── ipv6_tcp_server.rb
│   │   │   │   ├── ipv6_tls_client.rb
│   │   │   │   ├── ipv6_tls_server.rb
│   │   │   │   ├── ipv6_tls_tunnel_server.rb
│   │   │   │   ├── ipv6_udp_server.rb
│   │   │   │   ├── tcp_client.rb
│   │   │   │   ├── tcp_connection.rb
│   │   │   │   ├── tcp_server.rb
│   │   │   │   ├── tls_client.rb
│   │   │   │   ├── tls_server.rb
│   │   │   │   ├── tls_tunnel_connection.rb
│   │   │   │   ├── tls_tunnel_server.rb
│   │   │   │   └── udp_connection.rb
│   │   │   ├── listeners.rb
│   │   │   ├── message.rb
│   │   │   ├── message_processor.rb
│   │   │   ├── name_addr.rb
│   │   │   ├── proxy.rb
│   │   │   ├── request.rb
│   │   │   ├── response.rb
│   │   │   ├── rfc3263.rb
│   │   │   ├── server_transaction.rb
│   │   │   ├── sip.rb
│   │   │   ├── tags.rb
│   │   │   ├── timers.rb
│   │   │   ├── transport_manager.rb
│   │   │   ├── uac.rb
│   │   │   ├── uac_request.rb
│   │   │   └── uri.rb
│   │   ├── syslog.rb
│   │   ├── system_callbacks.rb
│   │   ├── tls.rb
│   │   ├── utils.rb
│   │   ├── version.rb
│   │   └── websocket/
│   │       ├── constants.rb
│   │       ├── http_request.rb
│   │       ├── launcher.rb
│   │       ├── listeners/
│   │       │   ├── connection.rb
│   │       │   ├── ipv4_ws_server.rb
│   │       │   ├── ipv4_wss_server.rb
│   │       │   ├── ipv4_wss_tunnel_server.rb
│   │       │   ├── ipv6_ws_server.rb
│   │       │   ├── ipv6_wss_server.rb
│   │       │   ├── ipv6_wss_tunnel_server.rb
│   │       │   ├── ws_server.rb
│   │       │   ├── wss_server.rb
│   │       │   └── wss_tunnel_server.rb
│   │       ├── listeners.rb
│   │       ├── websocket.rb
│   │       ├── ws_framing.rb
│   │       └── ws_sip_app.rb
│   └── oversip.rb
├── oversip.gemspec
├── test/
│   ├── oversip_test_helper.rb
│   ├── test_http_parser.rb
│   ├── test_name_addr.rb
│   ├── test_name_addr_parser.rb
│   ├── test_sip_message_parser.rb
│   ├── test_sip_uri_parser.rb
│   └── test_uri.rb
└── thirdparty/
    └── stud/
        └── NOTES
Download .txt
SYMBOL INDEX (787 symbols across 106 files)

FILE: etc/server.rb
  type MyExampleApp (line 18) | module MyExampleApp
  function on_request (line 84) | def (OverSIP::SipEvents).on_request request
  function on_client_tls_handshake (line 236) | def (OverSIP::SipEvents).on_client_tls_handshake connection, pems
  function on_server_tls_handshake (line 254) | def (OverSIP::SipEvents).on_server_tls_handshake connection, pems
  function on_client_tls_handshake (line 301) | def (OverSIP::WebSocketEvents).on_client_tls_handshake connection, pems

FILE: etc/tls/utils/create-cert.rb
  type OverSIP (line 9) | module OverSIP
    type Cert (line 10) | module Cert
      class Error (line 12) | class Error < ::StandardError ; end
      function create_cert (line 16) | def self.create_cert

FILE: etc/tls/utils/get-sip-identities.rb
  type TLS (line 11) | module TLS
    function get_sip_identities (line 20) | def self.get_sip_identities cert

FILE: ext/common/c_util.h
  function str_to_int (line 16) | static int str_to_int(const char* str, size_t len)
  function downcase_char (line 65) | static void downcase_char(char *c)

FILE: ext/common/ruby_c_util.h
  function VALUE (line 20) | static VALUE my_rb_str_hex_unescape(const char *str, size_t len)
  function VALUE (line 59) | static VALUE my_rb_str_downcase(const char *str, size_t len)

FILE: ext/sip_parser/common_headers.h
  type common_header_name (line 13) | struct common_header_name {
  type short_header (line 21) | struct short_header {
  type common_header_name (line 32) | struct common_header_name
  type short_header (line 96) | struct short_header
  function init_common_headers (line 100) | static void init_common_headers(void)
  function init_short_headers (line 118) | static void init_short_headers(void)
  function VALUE (line 134) | static VALUE find_common_header_name(const char *name, size_t len)
  function VALUE (line 148) | static VALUE find_short_header_name(char abbr)
  function VALUE (line 167) | static VALUE headerize(const char* hname, size_t hname_len)

FILE: ext/sip_parser/sip_message_parser.c
  function sip_message_parser_init (line 28754) | int sip_message_parser_init(sip_message_parser *parser)
  function sip_message_parser_execute (line 28807) | size_t sip_message_parser_execute(sip_message_parser *parser, const char...
  function sip_message_parser_finish (line 29716) | int sip_message_parser_finish(sip_message_parser *parser)
  function sip_message_parser_has_error (line 29731) | int sip_message_parser_has_error(sip_message_parser *parser)
  function sip_message_parser_is_finished (line 29737) | int sip_message_parser_is_finished(sip_message_parser *parser)

FILE: ext/sip_parser/sip_parser.h
  type data_type (line 9) | enum data_type {
  type method (line 15) | enum method {
  type component (line 36) | enum component {
  type uri_owner (line 45) | enum uri_owner {
  type uri_scheme (line 53) | enum uri_scheme {
  type uri_param_name (line 60) | enum uri_param_name {
  type host_type (line 68) | enum host_type {
  type header_field (line 74) | enum header_field {
  type transport (line 86) | enum transport {
  type data_type (line 96) | enum data_type
  type method (line 97) | enum method
  type header_field (line 100) | enum header_field
  type header_field (line 101) | enum header_field
  type header_field (line 102) | enum header_field
  type uri_owner (line 103) | enum uri_owner
  type uri_scheme (line 103) | enum uri_scheme
  type uri_owner (line 104) | enum uri_owner
  type uri_owner (line 105) | enum uri_owner
  type uri_owner (line 106) | enum uri_owner
  type uri_param_name (line 106) | enum uri_param_name
  type uri_owner (line 107) | enum uri_owner
  type uri_param_name (line 107) | enum uri_param_name
  type header_field (line 108) | enum header_field
  type component (line 109) | enum component
  type struct_message (line 112) | typedef struct struct_message {
  type struct_uri (line 139) | typedef struct struct_uri {
  type sip_message_parser (line 152) | typedef struct sip_message_parser {
  type sip_uri_parser (line 219) | typedef struct sip_uri_parser {

FILE: ext/sip_parser/sip_parser_ruby.c
  function data_type (line 123) | static void data_type(void *parser, enum data_type data_type)
  function init_component (line 153) | static void init_component(VALUE parsed, enum component msg_component)
  function header (line 166) | static void header(VALUE parsed, const char *hdr_field, size_t hdr_field...
  function msg_method (line 211) | static void msg_method(VALUE parsed, const char *at, size_t length, enum...
  function msg_status_code (line 280) | static void msg_status_code(VALUE parsed, const char *at, size_t length)
  function msg_reason_phrase (line 290) | static void msg_reason_phrase(VALUE parsed, const char *at, size_t length)
  function msg_sip_version (line 300) | static void msg_sip_version(VALUE parsed, const char *at, size_t length)
  function msg_via_sent_by_host (line 310) | static void msg_via_sent_by_host(VALUE parsed, const char *at, size_t le...
  function msg_via_sent_by_port (line 320) | static void msg_via_sent_by_port(VALUE parsed, const char *at, size_t le...
  function msg_via_branch (line 330) | static void msg_via_branch(VALUE parsed, const char *at, size_t length)
  function msg_via_branch_rfc3261 (line 340) | static void msg_via_branch_rfc3261(VALUE parsed, const char *at, size_t ...
  function msg_via_received (line 348) | static void msg_via_received(VALUE parsed, const char *at, size_t length)
  function msg_via_has_rport (line 358) | static void msg_via_has_rport(VALUE parsed)
  function msg_via_has_alias (line 366) | static void msg_via_has_alias(VALUE parsed)
  function msg_call_id (line 374) | static void msg_call_id(VALUE parsed, const char *at, size_t length)
  function msg_cseq_number (line 384) | static void msg_cseq_number(VALUE parsed, const char *at, size_t length)
  function msg_max_forwards (line 394) | static void msg_max_forwards(VALUE parsed, const char *at, size_t length)
  function msg_content_length (line 404) | static void msg_content_length(VALUE parsed, const char *at, size_t length)
  function msg_from_tag (line 414) | static void msg_from_tag(VALUE parsed, const char *at, size_t length)
  function msg_to_tag (line 424) | static void msg_to_tag(VALUE parsed, const char *at, size_t length)
  function VALUE (line 434) | static VALUE get_uri_object(VALUE parsed, enum uri_owner owner)
  function uri_scheme (line 457) | static void uri_scheme(VALUE parsed, enum uri_owner owner, const char *a...
  function uri_full (line 473) | static void uri_full(VALUE parsed, enum uri_owner owner, const char *at,...
  function uri_user (line 483) | static void uri_user(VALUE parsed, enum uri_owner owner, const char *at,...
  function uri_host (line 497) | static void uri_host(VALUE parsed, enum uri_owner owner, const char *at,...
  function uri_port (line 526) | static void uri_port(VALUE parsed, enum uri_owner owner, const char *at,...
  function uri_param (line 536) | static void uri_param(VALUE parsed, enum uri_owner owner, const char *ke...
  function uri_known_param (line 556) | static void uri_known_param(VALUE parsed, enum uri_owner owner, enum uri...
  function uri_has_param (line 596) | static void uri_has_param(VALUE parsed, enum uri_owner owner, enum uri_p...
  function uri_headers (line 612) | static void uri_headers(VALUE parsed, enum uri_owner owner, const char *...
  function uri_display_name (line 622) | static void uri_display_name(VALUE parsed, enum uri_owner owner, const c...
  function header_core_value (line 635) | static void header_core_value(VALUE parsed, enum header_field header_fie...
  function header_param (line 652) | static void header_param(VALUE parsed, enum header_field header_field, c...
  function msg_contact_params (line 687) | static void msg_contact_params(VALUE parsed, const char *at, size_t length)
  function msg_contact_has_reg_id (line 700) | static void msg_contact_has_reg_id(VALUE parsed)
  function option_tag (line 708) | static void option_tag(VALUE parsed, enum header_field header_field, con...
  function VALUE (line 736) | static VALUE my_rb_str_tel_number_clean(const char *str, size_t len)
  function SipMessageParser_free (line 768) | static void SipMessageParser_free(void *parser)
  function VALUE (line 779) | VALUE SipMessageParser_alloc(VALUE klass)
  function VALUE (line 842) | VALUE SipMessageParser_init(VALUE self)
  function VALUE (line 864) | VALUE SipMessageParser_reset(VALUE self)
  function VALUE (line 882) | VALUE SipMessageParser_finish(VALUE self)
  function VALUE (line 897) | VALUE SipMessageParser_execute(VALUE self, VALUE buffer, VALUE start)
  function VALUE (line 933) | VALUE SipMessageParser_has_error(VALUE self)
  function VALUE (line 949) | VALUE SipMessageParser_error(VALUE self)
  function VALUE (line 1024) | VALUE SipMessageParser_is_finished(VALUE self)
  function VALUE (line 1044) | VALUE SipMessageParser_parsed(VALUE self)
  function VALUE (line 1064) | VALUE SipMessageParser_nread(VALUE self)
  function VALUE (line 1081) | VALUE SipMessageParser_has_duplicated_core_header(VALUE self)
  function VALUE (line 1114) | VALUE SipMessageParser_has_missing_core_header(VALUE self)
  function VALUE (line 1135) | VALUE SipMessageParser_post_parsing(VALUE self)
  function VALUE (line 1158) | VALUE SipMessageParser_Class_headerize(VALUE self, VALUE string)
  function VALUE (line 1175) | VALUE SipMessageParser_Class_parse_uri(VALUE self, VALUE string, VALUE a...
  function Init_sip_parser (line 1225) | void Init_sip_parser()

FILE: ext/sip_parser/sip_uri_parser.c
  function sip_uri_parser_reset (line 39312) | void sip_uri_parser_reset(sip_uri_parser *parser)
  function sip_uri_parser_execute (line 39326) | int sip_uri_parser_execute(sip_uri_parser *parser, const char *buffer, s...

FILE: ext/stud/extconf.rb
  function log (line 6) | def log(message)
  function sys (line 11) | def sys(cmd)

FILE: ext/stun/stun_ruby.c
  function VALUE (line 54) | VALUE Stun_parse_request(VALUE self, VALUE rb_stun_request, VALUE rb_sou...
  function Init_stun (line 386) | void Init_stun()

FILE: ext/utils/haproxy_protocol.c
  function struct_haproxy_protocol (line 30) | struct_haproxy_protocol struct_haproxy_protocol_parser_execute(const cha...

FILE: ext/utils/haproxy_protocol.h
  type enum_haproxy_protocol_ip_type (line 8) | enum enum_haproxy_protocol_ip_type {
  type struct_haproxy_protocol (line 14) | typedef struct struct_haproxy_protocol {

FILE: ext/utils/ip_utils.c
  function utils_ip_parser_execute (line 26) | enum enum_ip_type utils_ip_parser_execute(const char *str, size_t len)

FILE: ext/utils/ip_utils.h
  type enum_ip_type (line 11) | enum enum_ip_type {
  type enum_ip_type (line 19) | enum enum_ip_type
  function utils_compare_pure_ips (line 23) | static int utils_compare_pure_ips(char *ip1, size_t len1, enum enum_ip_t...

FILE: ext/utils/outbound_utils.c
  function struct_outbound_udp_flow_token (line 30) | struct_outbound_udp_flow_token outbound_udp_flow_token_parser_execute(co...

FILE: ext/utils/outbound_utils.h
  type enum_outbound_udp_flow_token_ip_type (line 8) | enum enum_outbound_udp_flow_token_ip_type {
  type struct_outbound_udp_flow_token (line 14) | typedef struct struct_outbound_udp_flow_token {

FILE: ext/utils/utils_ruby.c
  function VALUE (line 21) | VALUE Utils_is_ip(VALUE self, VALUE string)
  function VALUE (line 40) | VALUE Utils_is_pure_ip(VALUE self, VALUE string)
  function VALUE (line 66) | VALUE Utils_ip_type(VALUE self, VALUE string)
  function VALUE (line 101) | VALUE Utils_compare_ips(VALUE self, VALUE string1, VALUE string2)
  function VALUE (line 154) | VALUE Utils_compare_pure_ips(VALUE self, VALUE string1, VALUE string2)
  function VALUE (line 204) | VALUE Utils_normalize_ipv6(int argc, VALUE *argv, VALUE self)
  function VALUE (line 234) | VALUE Utils_normalize_host(int argc, VALUE *argv, VALUE self)
  function VALUE (line 267) | VALUE Utils_to_pure_ip(VALUE self, VALUE string)
  function VALUE (line 295) | VALUE Utils_parser_outbound_udp_flow_token(VALUE self, VALUE string)
  function VALUE (line 338) | VALUE Utils_parser_haproxy_protocol(VALUE self, VALUE string)
  function Init_utils (line 371) | void Init_utils()

FILE: ext/utils/utils_ruby.h
  function VALUE (line 29) | VALUE utils_normalize_ipv6(VALUE string, int force_pure_ipv6)

FILE: ext/websocket_framing_utils/ws_framing_utils.h
  function utf8_decode (line 31) | static inline
  type utf8_validator (line 41) | typedef struct utf8_validator {

FILE: ext/websocket_framing_utils/ws_framing_utils_ruby.c
  function VALUE (line 17) | VALUE WsFramingUtils_unmask(VALUE self, VALUE payload, VALUE mask)
  function Utf8Validator_free (line 56) | static void Utf8Validator_free(void *validator)
  function VALUE (line 65) | VALUE Utf8Validator_alloc(VALUE klass)
  function VALUE (line 78) | VALUE Utf8Validator_reset(VALUE self)
  function VALUE (line 96) | VALUE Utf8Validator_validate(VALUE self, VALUE string)
  function Init_ws_framing_utils (line 123) | void Init_ws_framing_utils()

FILE: ext/websocket_http_parser/ws_http_parser.c
  function ws_http_request_parser_init (line 1291) | int ws_http_request_parser_init(ws_http_request_parser *parser)
  function ws_http_request_parser_execute (line 1325) | size_t ws_http_request_parser_execute(ws_http_request_parser *parser, co...
  function ws_http_request_parser_finish (line 1613) | int ws_http_request_parser_finish(ws_http_request_parser *parser)
  function ws_http_request_parser_has_error (line 1627) | int ws_http_request_parser_has_error(ws_http_request_parser *parser)
  function ws_http_request_parser_is_finished (line 1632) | int ws_http_request_parser_is_finished(ws_http_request_parser *parser)

FILE: ext/websocket_http_parser/ws_http_parser.h
  type method (line 12) | enum method {
  type uri_scheme (line 19) | enum uri_scheme {
  type method (line 25) | enum method
  type uri_scheme (line 26) | enum uri_scheme
  type struct_request (line 31) | typedef struct struct_request {
  type ws_http_request_parser (line 50) | typedef struct ws_http_request_parser {

FILE: ext/websocket_http_parser/ws_http_parser_ruby.c
  function header (line 45) | static void header(void *data, const char *hdr_field, size_t hdr_field_l...
  function req_method (line 71) | static void req_method(void *data, const char *at, size_t length, enum m...
  function req_uri_scheme (line 99) | static void req_uri_scheme(void *data, const char *at, size_t length, en...
  function req_request_uri (line 115) | static void req_request_uri(void *data, const char *at, size_t length)
  function req_request_path (line 126) | static void req_request_path(void *data, const char *at, size_t length)
  function req_query (line 137) | static void req_query(void *data, const char *at, size_t length)
  function req_fragment (line 148) | static void req_fragment(void *data, const char *at, size_t length)
  function req_http_version (line 159) | static void req_http_version(void *data, const char *at, size_t length)
  function req_host (line 170) | static void req_host(void *data, const char *at, size_t length)
  function req_port (line 185) | static void req_port(void *data, const char *at, size_t length)
  function req_content_length (line 196) | static void req_content_length(void *data, const char *at, size_t length)
  function req_hdr_connection_value (line 207) | static void req_hdr_connection_value(void *data, const char *at, size_t ...
  function req_hdr_upgrade (line 228) | static void req_hdr_upgrade(void *data, const char *at, size_t length)
  function req_hdr_sec_websocket_version (line 239) | static void req_hdr_sec_websocket_version(void *data, const char *at, si...
  function req_hdr_sec_websocket_key (line 250) | static void req_hdr_sec_websocket_key(void *data, const char *at, size_t...
  function req_hdr_sec_websocket_protocol_value (line 261) | static void req_hdr_sec_websocket_protocol_value(void *data, const char ...
  function req_hdr_origin (line 282) | static void req_hdr_origin(void *data, const char *at, size_t length)
  function VALUE (line 301) | static VALUE headerize(const char* hname, size_t hname_len)
  function HttpRequestParser_free (line 332) | static void HttpRequestParser_free(void *parser)
  function VALUE (line 343) | VALUE HttpRequestParser_alloc(VALUE klass)
  function VALUE (line 385) | VALUE HttpRequestParser_init(VALUE self)
  function VALUE (line 403) | VALUE HttpRequestParser_reset(VALUE self)
  function VALUE (line 421) | VALUE HttpRequestParser_finish(VALUE self)
  function VALUE (line 432) | VALUE HttpRequestParser_execute(VALUE self, VALUE req_hash, VALUE buffer...
  function VALUE (line 470) | VALUE HttpRequestParser_has_error(VALUE self)
  function VALUE (line 486) | VALUE HttpRequestParser_error(VALUE self)
  function VALUE (line 561) | VALUE HttpRequestParser_is_finished(VALUE self)
  function VALUE (line 578) | VALUE HttpRequestParser_nread(VALUE self)
  function Init_ws_http_parser (line 588) | void Init_ws_http_parser()

FILE: lib/oversip.rb
  type OverSIP (line 101) | module OverSIP
    function daemonized? (line 113) | def daemonized?
    type SIP (line 120) | module SIP ; end
    type WebSocket (line 121) | module WebSocket ; end
    type Modules (line 122) | module Modules ; end

FILE: lib/oversip/config.rb
  type OverSIP (line 1) | module OverSIP
    type Config (line 3) | module Config
      type Config::Validators (line 6) | module Config::Validators ; end
      function log_id (line 18) | def self.log_id
      function load (line 132) | def self.load config_dir=nil, config_file=nil
      function pre_check (line 236) | def self.pre_check conf_yaml
      function post_process (line 256) | def self.post_process
      function post_check (line 371) | def self.post_check
      function print (line 491) | def self.print colorize=true
      function humanize_value (line 525) | def self.humanize_value value
      function discover_local_ip (line 538) | def self.discover_local_ip(type)
      function system_reload (line 570) | def self.system_reload

FILE: lib/oversip/config_validators.rb
  type OverSIP (line 4) | module OverSIP
    type Config (line 6) | module Config
      type Validators (line 8) | module Validators
        function boolean (line 15) | def boolean value
        function string (line 19) | def string value
        function fixnum (line 23) | def fixnum value
        function port (line 27) | def port value
        function ipv4 (line 31) | def ipv4 value
        function ipv6 (line 36) | def ipv6 value
        function ipv4_any (line 41) | def ipv4_any value
        function ipv6_any (line 46) | def ipv6_any value
        function domain (line 51) | def domain value
        function choices (line 55) | def choices value, choices
        function greater_than (line 59) | def greater_than value, minimum
        function greater_equal_than (line 63) | def greater_equal_than value, minimum
        function minor_than (line 67) | def minor_than value, maximum
        function minor_equal_than (line 71) | def minor_equal_than value, maximum
        function readable_file (line 75) | def readable_file file
        function readable_dir (line 79) | def readable_dir dir
        function tls_pem_chain (line 83) | def tls_pem_chain file
        function tls_pem_private (line 106) | def tls_pem_private file

FILE: lib/oversip/default_server.rb
  type OverSIP (line 1) | module OverSIP
    type SystemEvents (line 3) | module SystemEvents
      function on_initialize (line 7) | def self.on_initialize
      function on_started (line 10) | def self.on_started
      function on_user_reload (line 13) | def self.on_user_reload
      function on_terminated (line 16) | def self.on_terminated error
    type SipEvents (line 22) | module SipEvents
      function on_request (line 26) | def self.on_request request
      function on_client_tls_handshake (line 29) | def self.on_client_tls_handshake connection, pems
      function on_server_tls_handshake (line 32) | def self.on_server_tls_handshake connection, pems
    type WebSocketEvents (line 37) | module WebSocketEvents
      function on_connection (line 41) | def self.on_connection connection, http_request
      function on_disconnection (line 44) | def self.on_disconnection connection, client_closed
      function on_client_tls_handshake (line 47) | def self.on_client_tls_handshake connection, pems

FILE: lib/oversip/errors.rb
  type OverSIP (line 1) | module OverSIP
    class Error (line 3) | class Error < ::StandardError ; end
    class ConfigurationError (line 5) | class ConfigurationError < Error ; end
    class RuntimeError (line 6) | class RuntimeError < Error ; end
    class ParsingError (line 8) | class ParsingError < RuntimeError ; end

FILE: lib/oversip/fiber_pool.rb
  type OverSIP (line 3) | module OverSIP
    class FiberPool (line 4) | class FiberPool
      method initialize (line 9) | def initialize count = 100
      method add_fiber (line 17) | def add_fiber
      method spawn (line 38) | def spawn &block

FILE: lib/oversip/launcher.rb
  type OverSIP::Launcher (line 1) | module OverSIP::Launcher
    function daemonize! (line 10) | def self.daemonize! options
    function run (line 85) | def self.run options
    function fatal (line 203) | def self.fatal msg
    function create_pid_file (line 211) | def self.create_pid_file path
    function assert_file_is_writable_readable_deletable (line 232) | def self.assert_file_is_writable_readable_deletable path
    function valid_pid? (line 252) | def self.valid_pid? path
    function run_servers (line 269) | def self.run_servers options
    function trap_signals (line 412) | def self.trap_signals
    function terminate (line 502) | def self.terminate error=false, fatal=false
    function delete_pid_file (line 551) | def self.delete_pid_file
    function set_user_group (line 558) | def self.set_user_group user, group
    function spawn_stud_process (line 573) | def self.spawn_stud_process options, listen_ip, listen_port, bg_ip, bg...
    function kill_stud_processes (line 615) | def self.kill_stud_processes

FILE: lib/oversip/logger.rb
  type OverSIP (line 1) | module OverSIP
    type Logger (line 6) | module Logger
      function load_methods (line 8) | def self.load_methods
      function fg_system_msg2str (line 65) | def self.fg_system_msg2str(level_str, msg, log_id)
      function log_id (line 78) | def log_id

FILE: lib/oversip/modules/outbound_mangling.rb
  type OverSIP::Modules (line 1) | module OverSIP::Modules
    type OutboundMangling (line 3) | module OutboundMangling
      function add_outbound_to_contact (line 9) | def self.add_outbound_to_contact proxy
      function extract_outbound_from_ruri (line 33) | def self.extract_outbound_from_ruri request

FILE: lib/oversip/modules/user_assertion.rb
  type OverSIP::Modules (line 1) | module OverSIP::Modules
    type UserAssertion (line 3) | module UserAssertion
      function assert_connection (line 9) | def self.assert_connection message
      function revoke_assertion (line 31) | def self.revoke_assertion message
      function add_pai (line 45) | def self.add_pai request

FILE: lib/oversip/proxies_config.rb
  type OverSIP (line 1) | module OverSIP
    type ProxiesConfig (line 3) | module ProxiesConfig
      function log_id (line 8) | def self.log_id
      function load (line 52) | def self.load proxies_yaml, reload=false
      function post_process (line 136) | def self.post_process

FILE: lib/oversip/ruby_ext/eventmachine.rb
  type EventMachine (line 1) | module EventMachine
    function oversip_connect_tcp_server (line 4) | def self.oversip_connect_tcp_server bind_addr, server, port, klass, *args
    class Connection (line 13) | class Connection
      method send_data (line 16) | def send_data data
      method send_datagram (line 20) | def send_datagram data, address, port
      method close_connection (line 27) | def close_connection after_writing=false
      method close_connection_after_writing (line 32) | def close_connection_after_writing

FILE: lib/oversip/sip/client.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class Client (line 3) | class Client
      method initialize (line 9) | def initialize proxy_profile=:default_proxy
      method on_provisional_response (line 23) | def on_provisional_response &block
      method on_success_response (line 27) | def on_success_response &block
      method on_failure_response (line 31) | def on_failure_response &block
      method on_canceled (line 35) | def on_canceled &block
      method on_invite_timeout (line 39) | def on_invite_timeout &block
      method on_error (line 43) | def on_error &block
      method on_target (line 47) | def on_target &block
      method clear_on_provisional_response (line 51) | def clear_on_provisional_response
      method clear_on_success_response (line 55) | def clear_on_success_response
      method clear_on_failure_response (line 59) | def clear_on_failure_response
      method clear_on_canceled (line 63) | def clear_on_canceled
      method clear_on_invite_timeout (line 67) | def clear_on_invite_timeout
      method clear_on_error (line 71) | def clear_on_error
      method clear_on_target (line 75) | def clear_on_target
      method clear_callbacks (line 79) | def clear_callbacks
      method abort_routing (line 91) | def abort_routing
      method add_target_to_blacklist (line 98) | def add_target_to_blacklist timeout=nil, status_code=403, reason_phr...
      method client_timeout (line 118) | def client_timeout
      method connection_failed (line 129) | def connection_failed
      method tls_validation_failed (line 140) | def tls_validation_failed
      method invite_timeout (line 152) | def invite_timeout
      method run_on_provisional_response_cbs (line 161) | def run_on_provisional_response_cbs response
      method run_on_success_response_cbs (line 172) | def run_on_success_response_cbs response
      method run_on_failure_response_cbs (line 183) | def run_on_failure_response_cbs response
      method run_on_canceled_cbs (line 194) | def run_on_canceled_cbs
      method run_on_invite_timeout_cbs (line 205) | def run_on_invite_timeout_cbs
      method run_on_error_cbs (line 216) | def run_on_error_cbs status, reason, code
      method run_on_target_cbs (line 227) | def run_on_target_cbs target
      method add_routing_headers (line 239) | def add_routing_headers
      method check_dns_cache (line 247) | def check_dns_cache dst_scheme, dst_host, dst_host_type, dst_port, d...
      method do_dns (line 267) | def do_dns dns_cache_key, id, dst_scheme, dst_host, dst_host_type, d...
      method rfc3263_succeeded (line 307) | def rfc3263_succeeded result
      method try_next_target (line 332) | def try_next_target status=nil, reason=nil, full_response=nil, code=nil
      method use_target (line 354) | def use_target target
      method no_more_targets (line 380) | def no_more_targets status, reason, full_response, code
      method rfc3263_failed (line 384) | def rfc3263_failed error
      method do_dns_fail (line 422) | def do_dns_fail status, reason, code

FILE: lib/oversip/sip/client_transaction.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class ClientTransaction (line 3) | class ClientTransaction
      method get_class (line 7) | def self.get_class request
      method initialize (line 18) | def initialize core, request, transaction_conf, transport, ip=nil, i...
    class InviteClientTransaction (line 76) | class InviteClientTransaction < ClientTransaction
      method initialize (line 78) | def initialize core, request, transaction_conf, transport, ip=nil, i...
      method send_request (line 86) | def send_request
      method start_timer_A (line 131) | def start_timer_A
      method start_timer_B (line 140) | def start_timer_B
      method start_timer_C (line 150) | def start_timer_C
      method start_timer_D (line 160) | def start_timer_D
      method start_timer_M (line 167) | def start_timer_M
      method terminate_transaction (line 175) | def terminate_transaction
      method retransmit_request (line 180) | def retransmit_request
      method receive_response (line 184) | def receive_response response
      method connection_failed (line 257) | def connection_failed
      method tls_validation_failed (line 271) | def tls_validation_failed
      method send_ack (line 282) | def send_ack response
      method do_cancel (line 312) | def do_cancel cancel=nil
      method send_cancel (line 339) | def send_cancel
      method start_timer_E_cancel (line 348) | def start_timer_E_cancel
      method start_timer_F_cancel (line 357) | def start_timer_F_cancel
      method retransmit_cancel (line 367) | def retransmit_cancel
      method receive_response_to_cancel (line 371) | def receive_response_to_cancel(response)
    class NonInviteClientTransaction (line 386) | class NonInviteClientTransaction < ClientTransaction
      method initialize (line 388) | def initialize core, request, transaction_conf, transport, ip=nil, i...
      method send_request (line 396) | def send_request
      method start_timer_E (line 461) | def start_timer_E
      method start_timer_F (line 474) | def start_timer_F
      method start_timer_K (line 483) | def start_timer_K
      method terminate_transaction (line 491) | def terminate_transaction
      method retransmit_request (line 496) | def retransmit_request
      method receive_response (line 500) | def receive_response response
      method connection_failed (line 544) | def connection_failed
      method tls_validation_failed (line 552) | def tls_validation_failed
    class Ack2xxForwarder (line 563) | class Ack2xxForwarder < ClientTransaction
      method initialize (line 565) | def initialize core, request, transaction_conf, transport, ip=nil, i...
      method send_request (line 570) | def send_request
      method connection_failed (line 576) | def connection_failed
      method tls_validation_failed (line 580) | def tls_validation_failed

FILE: lib/oversip/sip/constants.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP

FILE: lib/oversip/sip/core.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    type Core (line 4) | module Core
      function create_transaction (line 7) | def create_transaction
      function check_max_forwards (line 25) | def check_max_forwards max_forwards
      function loose_route (line 42) | def loose_route
      function destination_myself? (line 140) | def destination_myself?
      function fix_nat (line 152) | def fix_nat
      function outgoing_outbound_requested? (line 163) | def outgoing_outbound_requested?
      function incoming_outbound_requested? (line 189) | def incoming_outbound_requested?       ; @incoming_outbound_requeste...
      function connection_outbound_flow_token (line 192) | def connection_outbound_flow_token
      function local_uri? (line 207) | def local_uri? uri

FILE: lib/oversip/sip/launcher.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    type Launcher (line 3) | module Launcher
      function run (line 15) | def self.run enabled, ip_type, ip, port, transport, virtual_ip=nil, ...

FILE: lib/oversip/sip/listeners/connection.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class Connection (line 3) | class Connection < ::EM::Connection
      method reliable_transport_listener? (line 17) | def reliable_transport_listener?
      method outbound_listener? (line 21) | def outbound_listener?
      method initialize (line 29) | def initialize
      method receive_senderror (line 37) | def receive_senderror error, data
      method transport (line 41) | def transport
      method open? (line 45) | def open?

FILE: lib/oversip/sip/listeners/ipv4_tcp_client.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv4TcpClient (line 3) | class IPv4TcpClient < TcpClient
      method log_id (line 15) | def log_id

FILE: lib/oversip/sip/listeners/ipv4_tcp_server.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv4TcpServer (line 3) | class IPv4TcpServer < TcpServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/sip/listeners/ipv4_tls_client.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv4TlsClient (line 3) | class IPv4TlsClient < TlsClient
      method log_id (line 15) | def log_id

FILE: lib/oversip/sip/listeners/ipv4_tls_server.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv4TlsServer (line 3) | class IPv4TlsServer < TlsServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/sip/listeners/ipv4_tls_tunnel_server.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv4TlsTunnelServer (line 3) | class IPv4TlsTunnelServer < TlsTunnelServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/sip/listeners/ipv4_udp_server.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv4UdpServer (line 3) | class IPv4UdpServer < UdpConnection
      method log_id (line 15) | def log_id

FILE: lib/oversip/sip/listeners/ipv6_tcp_client.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv6TcpClient (line 3) | class IPv6TcpClient < TcpClient
      method log_id (line 15) | def log_id

FILE: lib/oversip/sip/listeners/ipv6_tcp_server.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv6TcpServer (line 3) | class IPv6TcpServer < TcpServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/sip/listeners/ipv6_tls_client.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv6TlsClient (line 3) | class IPv6TlsClient < TlsClient
      method log_id (line 15) | def log_id

FILE: lib/oversip/sip/listeners/ipv6_tls_server.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv6TlsServer (line 3) | class IPv6TlsServer < TlsServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/sip/listeners/ipv6_tls_tunnel_server.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv6TlsTunnelServer (line 3) | class IPv6TlsTunnelServer < TlsTunnelServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/sip/listeners/ipv6_udp_server.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class IPv6UdpServer (line 3) | class IPv6UdpServer < UdpConnection
      method log_id (line 15) | def log_id

FILE: lib/oversip/sip/listeners/tcp_client.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class TcpClient (line 3) | class TcpClient < TcpConnection
      method initialize (line 12) | def initialize ip, port
      method connection_completed (line 29) | def connection_completed
      method remote_desc (line 37) | def remote_desc
      method unbind (line 45) | def unbind cause=nil
      method record_route (line 75) | def record_route

FILE: lib/oversip/sip/listeners/tcp_connection.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class TcpConnection (line 3) | class TcpConnection < Connection
      method remote_ip_type (line 9) | def remote_ip_type
      method remote_ip (line 13) | def remote_ip
      method remote_port (line 17) | def remote_port
      method receive_data (line 21) | def receive_data data
      method process_received_data (line 29) | def process_received_data
      method parse_headers (line 64) | def parse_headers
      method get_body (line 174) | def get_body
      method send_sip_msg (line 190) | def send_sip_msg msg, ip=nil, port=nil

FILE: lib/oversip/sip/listeners/tcp_server.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class TcpServer (line 3) | class TcpServer < TcpConnection
      method post_connection (line 7) | def post_connection
      method remote_desc (line 34) | def remote_desc force=nil
      method unbind (line 49) | def unbind cause=nil

FILE: lib/oversip/sip/listeners/tls_client.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class TlsClient (line 3) | class TlsClient < TcpClient
      method initialize (line 11) | def initialize ip, port
      method connection_completed (line 17) | def connection_completed
      method ssl_verify_peer (line 42) | def ssl_verify_peer pem
      method ssl_handshake_completed (line 57) | def ssl_handshake_completed
      method unbind (line 98) | def unbind cause=nil
      method send_sip_msg (line 108) | def send_sip_msg msg, ip=nil, port=nil

FILE: lib/oversip/sip/listeners/tls_server.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class TlsServer (line 3) | class TlsServer < TcpServer
      method post_init (line 8) | def post_init
      method ssl_verify_peer (line 31) | def ssl_verify_peer pem
      method ssl_handshake_completed (line 45) | def ssl_handshake_completed
      method unbind (line 82) | def unbind cause=nil

FILE: lib/oversip/sip/listeners/tls_tunnel_connection.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class TlsTunnelConnection (line 3) | class TlsTunnelConnection < TcpConnection
      method process_received_data (line 9) | def process_received_data
      method parse_haproxy_protocol (line 52) | def parse_haproxy_protocol

FILE: lib/oversip/sip/listeners/tls_tunnel_server.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class TlsTunnelServer (line 3) | class TlsTunnelServer < TlsTunnelConnection
      method post_connection (line 7) | def post_connection
      method remote_desc (line 24) | def remote_desc force=nil
      method unbind (line 39) | def unbind cause=nil

FILE: lib/oversip/sip/listeners/udp_connection.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class UdpConnection (line 3) | class UdpConnection < Connection
      method receive_data (line 5) | def receive_data data
      method parse_message (line 29) | def parse_message
      method send_sip_msg (line 199) | def send_sip_msg msg, ip, port
      method unbind (line 205) | def unbind cause=nil

FILE: lib/oversip/sip/message.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class Message (line 3) | class Message
      method udp? (line 63) | def udp?               ; @transport == :udp          end
      method tcp? (line 64) | def tcp?               ; @transport == :tcp          end
      method tls? (line 65) | def tls?               ; @transport == :tls          end
      method ws? (line 66) | def ws?                ; @transport == :ws           end
      method wss? (line 67) | def wss?               ; @transport == :wss          end
      method websocket? (line 69) | def websocket?         ; @transport == :ws || @transport == :wss  end
      method unknown_method? (line 71) | def unknown_method?    ; @is_unknown_method          end
      method via_rport? (line 73) | def via_rport?         ; @via_has_rport              end
      method via_alias? (line 75) | def via_alias?         ; @via_has_alias              end
      method contact_reg_id? (line 77) | def contact_reg_id?    ; @contact_has_reg_id         end
      method dialog_forming? (line 79) | def dialog_forming?
      method record_routing_aware? (line 83) | def record_routing_aware?
      method outbound_aware? (line 87) | def outbound_aware?
      method has_header? (line 92) | def has_header? name
      method header_top (line 97) | def header_top name
      method header_all (line 104) | def header_all name
      method set_header (line 110) | def set_header name, value
      method delete_header (line 122) | def delete_header name
      method delete_header_top (line 128) | def delete_header_top name
      method insert_header (line 136) | def insert_header name, value
      method append_header (line 149) | def append_header name, value
      method replace_header_top (line 159) | def replace_header_top name, value
      method close_connection (line 169) | def close_connection

FILE: lib/oversip/sip/message_processor.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    type MessageProcessor (line 3) | module MessageProcessor
      function valid_message? (line 13) | def valid_message? parser
      function add_via_received_rport (line 27) | def add_via_received_rport
      function check_via_branch (line 54) | def check_via_branch
      function process_request (line 75) | def process_request
      function process_response (line 119) | def process_response
      function check_transaction (line 144) | def check_transaction

FILE: lib/oversip/sip/name_addr.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class NameAddr (line 3) | class NameAddr < OverSIP::SIP::Uri
      method parse (line 8) | def self.parse value
      method initialize (line 15) | def initialize display_name=nil, scheme=:sip, user=nil, host=nil, po...
      method display_name= (line 27) | def display_name= value
      method to_s (line 32) | def to_s
      method modified? (line 45) | def modified?

FILE: lib/oversip/sip/proxy.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class Proxy (line 3) | class Proxy < Client
      method drop_response (line 6) | def drop_response response=nil
      method route (line 20) | def route request, dst_host=nil, dst_port=nil, dst_transport=nil
      method receive_response (line 121) | def receive_response response
      method receive_cancel (line 156) | def receive_cancel cancel
      method invite_timeout (line 167) | def invite_timeout
      method add_routing_headers (line 181) | def add_routing_headers
      method no_more_targets (line 286) | def no_more_targets status, reason, full_response, code
      method do_dns_fail (line 311) | def do_dns_fail status, reason, code

FILE: lib/oversip/sip/request.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class Request (line 3) | class Request < Message
      method log_id (line 25) | def log_id
      method request? (line 29) | def request?      ; true         end
      method response? (line 30) | def response?     ; false        end
      method initial? (line 32) | def initial?      ; ! @to_tag    end
      method in_dialog? (line 33) | def in_dialog?    ; @to_tag      end
      method secure? (line 35) | def secure?
      method reply (line 40) | def reply status_code, reason_phrase=nil, extra_headers=[], body=nil
      method reply_full (line 87) | def reply_full response
      method reply_199 (line 108) | def reply_199 response
      method ruri= (line 125) | def ruri= ruri
      method send_response (line 137) | def send_response(response)
      method to_s (line 150) | def to_s

FILE: lib/oversip/sip/response.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class Response (line 3) | class Response < Message
      method request? (line 10) | def request?      ; false        end
      method response? (line 11) | def response?     ; true         end
      method to_s (line 14) | def to_s

FILE: lib/oversip/sip/rfc3263.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    type RFC3263 (line 3) | module RFC3263
      class Target (line 7) | class Target
        method to_s (line 8) | def to_s
      class SrvTargets (line 18) | class SrvTargets < ::Array
        method randomize (line 21) | def randomize
        method randomize_entries (line 36) | def randomize_entries(entries, ordered_targets)
      class SrvRandomizedTargets (line 62) | class SrvRandomizedTargets < ::Array ; end
      class MultiTargets (line 64) | class MultiTargets < ::Array
        method flatten (line 67) | def flatten
      function module_init (line 96) | def self.module_init
      function run (line 104) | def self.run
      function resolver (line 109) | def self.resolver
      class Query (line 114) | class Query
        method class_init (line 117) | def self.class_init
        method initialize (line 121) | def initialize dns_conf, id, uri_scheme, uri_host, uri_host_type, ...
        method callback (line 149) | def callback &block
        method errback (line 153) | def errback &block
        method resolve (line 165) | def resolve
        method continue_with_SRV (line 423) | def continue_with_SRV
        method resolve_A_AAAA (line 477) | def resolve_A_AAAA transport, domain, port
        method resolve_SRV (line 506) | def resolve_SRV domain, scheme=nil, transport=nil, naptr_transport...
        method sync_resolve_NAPTR (line 548) | def sync_resolve_NAPTR domain
        method sync_resolve_SRV (line 566) | def sync_resolve_SRV domain, service=nil, protocol=nil
        method sync_resolve_A (line 603) | def sync_resolve_A domain
        method sync_resolve_AAAA (line 621) | def sync_resolve_AAAA domain

FILE: lib/oversip/sip/server_transaction.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class ServerTransaction (line 3) | class ServerTransaction
      method initialize (line 11) | def initialize request
      method retransmit_last_response (line 17) | def retransmit_last_response
    class InviteServerTransaction (line 24) | class InviteServerTransaction < ServerTransaction
      method initialize (line 26) | def initialize request
      method start_timer_G (line 41) | def start_timer_G
      method start_timer_H (line 50) | def start_timer_H
      method start_timer_I (line 58) | def start_timer_I
      method start_timer_L (line 66) | def start_timer_L
      method start_timer_C2 (line 74) | def start_timer_C2
      method receive_ack (line 83) | def receive_ack
      method receive_cancel (line 104) | def receive_cancel cancel
      method terminate_transaction (line 109) | def terminate_transaction
      method receive_response (line 114) | def receive_response status_code
      method valid_response? (line 156) | def valid_response? status_code
    class NonInviteServerTransaction (line 191) | class NonInviteServerTransaction < ServerTransaction
      method initialize (line 193) | def initialize request
      method start_timer_INT1 (line 205) | def start_timer_INT1
      method start_timer_INT2 (line 216) | def start_timer_INT2
      method start_timer_J (line 223) | def start_timer_J
      method terminate_transaction (line 231) | def terminate_transaction
      method receive_response (line 236) | def receive_response(status_code)
      method valid_response? (line 270) | def valid_response? status_code

FILE: lib/oversip/sip/sip.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    function module_init (line 3) | def self.module_init
    function local_aliases (line 56) | def self.local_aliases
    function tcp_keepalive_interval (line 60) | def self.tcp_keepalive_interval
    function local_ipv4 (line 64) | def self.local_ipv4
    function local_ipv6 (line 68) | def self.local_ipv6
    function callback_on_client_tls_handshake (line 72) | def self.callback_on_client_tls_handshake

FILE: lib/oversip/sip/tags.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    type Tags (line 3) | module Tags
      function totag_for_sl_reply (line 14) | def self.totag_for_sl_reply
      function check_totag_for_sl_reply (line 18) | def self.check_totag_for_sl_reply totag
      function value_for_route_ovid (line 23) | def self.value_for_route_ovid
      function check_value_for_route_ovid (line 27) | def self.check_value_for_route_ovid value
      function create_antiloop_id (line 32) | def self.create_antiloop_id request

FILE: lib/oversip/sip/timers.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP

FILE: lib/oversip/sip/transport_manager.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    type TransportManager (line 3) | module TransportManager
      function get_connection (line 18) | def self.get_connection klass, ip, port, client_transaction=nil, cal...
      function add_connection (line 73) | def self.add_connection server, server_class, ip_type, ip, port
      function get_outbound_connection (line 90) | def self.get_outbound_connection flow_token
      function add_outbound_connection (line 117) | def self.add_outbound_connection connection
      function delete_outbound_connection (line 124) | def self.delete_outbound_connection outbound_flow_token

FILE: lib/oversip/sip/uac.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class Uac (line 3) | class Uac < Client
      method route (line 5) | def route request, dst_host=nil, dst_port=nil, dst_transport=nil
      method receive_response (line 51) | def receive_response response
      method no_more_targets (line 77) | def no_more_targets status, reason, full_response, code

FILE: lib/oversip/sip/uac_request.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class UacRequest (line 3) | class UacRequest
      method initialize (line 14) | def initialize data, extra_headers=[], body=nil
      method insert_header (line 48) | def insert_header name, value
      method delete_header_top (line 53) | def delete_header_top name
      method to_s (line 58) | def to_s

FILE: lib/oversip/sip/uri.rb
  type OverSIP::SIP (line 1) | module OverSIP::SIP
    class Uri (line 3) | class Uri
      method parse (line 7) | def self.parse value
      method initialize (line 14) | def initialize scheme=:sip, user=nil, host=nil, port=nil
      method sip? (line 24) | def sip?
      method tel? (line 28) | def tel?
      method scheme= (line 32) | def scheme= value
      method unknown_scheme? (line 38) | def unknown_scheme?
      method user= (line 42) | def user= value
      method host= (line 50) | def host= value
      method host_type= (line 59) | def host_type= value
      method port= (line 64) | def port= value
      method params (line 70) | def params
      method has_param? (line 74) | def has_param? k
      method get_param (line 79) | def get_param k
      method set_param (line 84) | def set_param k, v
      method del_param (line 91) | def del_param k
      method clear_params (line 101) | def clear_params
      method transport_param= (line 111) | def transport_param= value
      method phone_context_param= (line 122) | def phone_context_param= value
      method lr_param? (line 133) | def lr_param?
      method ob_param? (line 137) | def ob_param?
      method headers= (line 141) | def headers= value
      method uri (line 147) | def uri
      method aor (line 186) | def aor
      method modified? (line 202) | def modified?

FILE: lib/oversip/syslog.rb
  type OverSIP (line 1) | module OverSIP
    type Syslog (line 3) | module Syslog
      function log (line 30) | def self.log level_value, msg, log_id, user

FILE: lib/oversip/system_callbacks.rb
  type OverSIP (line 1) | module OverSIP
    type SystemCallbacks (line 6) | module SystemCallbacks
      function on_started (line 22) | def self.on_started pr=nil, &bl
      function on_terminated (line 29) | def self.on_terminated pr=nil, &bl
      function on_reload (line 36) | def self.on_reload pr=nil, &bl

FILE: lib/oversip/tls.rb
  type OverSIP (line 1) | module OverSIP
    type TLS (line 3) | module TLS
      function module_init (line 12) | def self.module_init
      function validate (line 95) | def self.validate pems
      function get_sip_identities (line 127) | def self.get_sip_identities cert

FILE: lib/oversip/utils.rb
  type OverSIP (line 1) | module OverSIP
    type Utils (line 3) | module Utils
      function string_compare (line 9) | def self.string_compare string1, string2
      function regexp_compare (line 18) | def self.regexp_compare string, expression

FILE: lib/oversip/version.rb
  type OverSIP (line 3) | module OverSIP
    type Version (line 5) | module Version

FILE: lib/oversip/websocket/constants.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket

FILE: lib/oversip/websocket/http_request.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class HttpRequest (line 3) | class HttpRequest < ::Hash
      method log_id (line 29) | def log_id
      method unknown_method? (line 33) | def unknown_method?  ;  @is_unknown_method  end
      method reply (line 36) | def reply status_code, reason_phrase=nil, extra_headers={}

FILE: lib/oversip/websocket/launcher.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    type Launcher (line 3) | module Launcher
      function run (line 16) | def self.run enabled, ip_type, ip, port, transport, virtual_ip=nil, ...

FILE: lib/oversip/websocket/listeners/connection.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class Connection (line 3) | class Connection < ::EM::Connection
      method reliable_transport_listener? (line 17) | def reliable_transport_listener?
      method outbound_listener? (line 21) | def outbound_listener?
      method initialize (line 29) | def initialize
      method open? (line 35) | def open?
      method close (line 39) | def close status=nil, reason=nil

FILE: lib/oversip/websocket/listeners/ipv4_ws_server.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class IPv4WsServer (line 3) | class IPv4WsServer < WsServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/websocket/listeners/ipv4_wss_server.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class IPv4WssServer (line 3) | class IPv4WssServer < WssServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/websocket/listeners/ipv4_wss_tunnel_server.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class IPv4WssTunnelServer (line 3) | class IPv4WssTunnelServer < WssTunnelServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/websocket/listeners/ipv6_ws_server.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class IPv6WsServer (line 3) | class IPv6WsServer < WsServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/websocket/listeners/ipv6_wss_server.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class IPv6WssServer (line 3) | class IPv6WssServer < WssServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/websocket/listeners/ipv6_wss_tunnel_server.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class IPv6WssTunnelServer (line 3) | class IPv6WssTunnelServer < WssTunnelServer
      method log_id (line 16) | def log_id

FILE: lib/oversip/websocket/listeners/ws_server.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class WsServer (line 3) | class WsServer < Connection
      method remote_ip_type (line 18) | def remote_ip_type
      method remote_ip (line 22) | def remote_ip
      method remote_port (line 26) | def remote_port
      method transport (line 30) | def transport
      method post_connection (line 34) | def post_connection
      method remote_desc (line 53) | def remote_desc force=nil
      method unbind (line 68) | def unbind cause=nil
      method receive_data (line 101) | def receive_data data
      method process_received_data (line 110) | def process_received_data
      method parse_http_headers (line 147) | def parse_http_headers
      method check_http_request (line 178) | def check_http_request
      method do_on_connection_callback (line 245) | def do_on_connection_callback
      method accept_ws_handshake (line 273) | def accept_ws_handshake
      method http_reject (line 302) | def http_reject status_code=403, reason_phrase=nil, extra_headers=nil
      method send_sip_msg (line 310) | def send_sip_msg msg, ip=nil, port=nil

FILE: lib/oversip/websocket/listeners/wss_server.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class WssServer (line 3) | class WssServer < WsServer
      method post_init (line 8) | def post_init
      method ssl_verify_peer (line 31) | def ssl_verify_peer pem
      method ssl_handshake_completed (line 45) | def ssl_handshake_completed
      method unbind (line 82) | def unbind cause=nil

FILE: lib/oversip/websocket/listeners/wss_tunnel_server.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class WssTunnelServer (line 3) | class WssTunnelServer < WsServer
      method post_connection (line 5) | def post_connection
      method unbind (line 23) | def unbind cause=nil
      method process_received_data (line 56) | def process_received_data
      method parse_haproxy_protocol (line 104) | def parse_haproxy_protocol

FILE: lib/oversip/websocket/websocket.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    function module_init (line 3) | def self.module_init
    function callback_on_client_tls_handshake (line 9) | def self.callback_on_client_tls_handshake

FILE: lib/oversip/websocket/ws_framing.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class WsFraming (line 3) | class WsFraming
      method class_init (line 23) | def self.class_init
      method log_id (line 32) | def log_id
      method initialize (line 37) | def initialize connection, buffer
      method do_keep_alive (line 45) | def do_keep_alive interval
      method receive_data (line 57) | def receive_data
      method control_frame? (line 354) | def control_frame?
      method text_or_binary_frame? (line 359) | def text_or_binary_frame?
      method continuation_frame? (line 364) | def continuation_frame?
      method send_text_frame (line 370) | def send_text_frame message
      method send_binary_frame (line 404) | def send_binary_frame message
      method send_ping_frame (line 438) | def send_ping_frame data=nil
      method send_pong_frame (line 470) | def send_pong_frame data=nil
      method send_close_frame (line 502) | def send_close_frame status=nil, reason=nil, in_reply_to_close=nil

FILE: lib/oversip/websocket/ws_sip_app.rb
  type OverSIP::WebSocket (line 1) | module OverSIP::WebSocket
    class WsSipApp (line 3) | class WsSipApp
      method class_init (line 8) | def self.class_init
      method log_id (line 15) | def log_id
      method initialize (line 20) | def initialize connection, ws_framing
      method receive_payload_data (line 34) | def receive_payload_data payload_data
      method message_done (line 44) | def message_done type
      method process_sip_message (line 55) | def process_sip_message ws_message

FILE: test/oversip_test_helper.rb
  class OverSIPTest (line 5) | class OverSIPTest < Test::Unit::TestCase
    method assert_true (line 7) | def assert_true(object, message="")
    method assert_false (line 11) | def assert_false(object, message="")
    method assert_equal_options (line 15) | def assert_equal_options(options, element)

FILE: test/test_http_parser.rb
  class TestHttpParser (line 6) | class TestHttpParser < OverSIPTest
    method parse (line 8) | def parse data
    method test_parse_http_get (line 35) | def test_parse_http_get

FILE: test/test_name_addr.rb
  class TestNameAddr (line 6) | class TestNameAddr < OverSIPTest
    method test_name_addr (line 8) | def test_name_addr

FILE: test/test_name_addr_parser.rb
  class TestNameAddrParser (line 6) | class TestNameAddrParser < OverSIPTest
    method test_parse_name_addr (line 8) | def test_parse_name_addr

FILE: test/test_sip_message_parser.rb
  class TestSipMessageParser (line 6) | class TestSipMessageParser < OverSIPTest
    method parse (line 8) | def parse data
    method test_parse_sip_invite (line 38) | def test_parse_sip_invite

FILE: test/test_sip_uri_parser.rb
  class TestSipUriParser (line 6) | class TestSipUriParser < OverSIPTest
    method test_parse_sip_uri (line 8) | def test_parse_sip_uri
    method test_parse_tel_uri (line 25) | def test_parse_tel_uri
    method test_parse_http_uri (line 42) | def test_parse_http_uri

FILE: test/test_uri.rb
  class TestUri (line 6) | class TestUri < OverSIPTest
    method test_sip_uri (line 8) | def test_sip_uri
    method test_tel_uri (line 32) | def test_tel_uri
    method test_http_uri (line 54) | def test_http_uri
Condensed preview — 167 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,021K chars).
[
  {
    "path": ".gitignore",
    "chars": 160,
    "preview": "/*.gem\n/.bundle\n/.config\n/test/tmp\n/tmp\n/Gemfile.lock\n*.so\n*.o\n*.bundle\n.DS_Store\nMakefile\nmkmf.log\n/bin/oversip_stud\n/t"
  },
  {
    "path": ".travis.yml",
    "chars": 209,
    "preview": "language: ruby\nrvm:\n  - 1.9.3\n  - 2.0.0\n  - 2.1\n  - 2.2\n  - 2.3\n  - 2.4.0-preview2\n\nbefore_install:\n  - gem install bund"
  },
  {
    "path": "AUTHORS",
    "chars": 545,
    "preview": "MAIN AUTHOR\n===========\n\n- Iñaki Baz Castillo <ibc@aliax.net> (Github @ibc)\n\n\n\nCONTRIBUTORS\n============\n\n- Jon Bonilla "
  },
  {
    "path": "CHANGELOG.md",
    "chars": 10062,
    "preview": "CHANGELOG\n=========\n\nVersion 2.0.3 (released in 2016-01-29)\n--------------------------------------\n\n- Suitable for Debia"
  },
  {
    "path": "Gemfile",
    "chars": 84,
    "preview": "source \"http://rubygems.org\"\n\ngemspec\n\ngroup :test do\n  gem \"rake\", \"~> 10.3.2\"\nend\n"
  },
  {
    "path": "LICENSE",
    "chars": 1155,
    "preview": "Name: OverSIP\nMaintainer: Iñaki Baz Castillo <ibc@aliax.net>\nCopyright (c) 2012-2016 Iñaki Baz Castillo\n\n\nLicense: The M"
  },
  {
    "path": "README.md",
    "chars": 1917,
    "preview": "<p align=\"center\"><a href=\"http://oversip.versatica.com\"><img src=\"http://oversip.versatica.com/images/oversip-banner.pn"
  },
  {
    "path": "Rakefile",
    "chars": 1671,
    "preview": "require \"rake/testtask\"\nrequire \"rake/clean\"\n\n\nOVERSIP_EXTENSIONS = [\n  { :dir => \"ext/sip_parser\", :lib => \"sip_parser."
  },
  {
    "path": "bin/oversip",
    "chars": 5808,
    "preview": "#!/usr/bin/env ruby\n# -*- encoding: binary -*-\n\nunless RUBY_VERSION >= \"1.9.2\"\n  raise ::LoadError, \"OverSIP requires Ru"
  },
  {
    "path": "create-deb.sh",
    "chars": 368,
    "preview": "#!/bin/bash\n\n# Using this the generated stuf is clean after package is built.\n# Options -us and -uc prevent the package "
  },
  {
    "path": "debian/changelog",
    "chars": 2814,
    "preview": "oversip (2.0.4) stable; urgency=high\n  * Package for OverSIP Ruby Gem 2.0.4.\n -- Iñaki Baz Castillo <ibc@aliax.net>  Fri"
  },
  {
    "path": "debian/compat",
    "chars": 2,
    "preview": "7\n"
  },
  {
    "path": "debian/control",
    "chars": 1091,
    "preview": "Source: oversip\nSection: comm\nPriority: optional\nMaintainer: Iñaki Baz Castillo <ibc@aliax.net>\nHomepage: http://www.ove"
  },
  {
    "path": "debian/copyright",
    "chars": 1171,
    "preview": "Name: OverSIP\nMaintainer: Iñaki Baz Castillo <ibc@aliax.net>\nCopyright (c) 2012-2016 Iñaki Baz Castillo <ibc@aliax.net>\n"
  },
  {
    "path": "debian/oversip.default",
    "chars": 360,
    "preview": "#\n# oversip startup options\n#\n\n# Set to 'yes' when configured.\nRUN=no\n\n# User to run as.\nUSER=oversip\n\n# Group to run as"
  },
  {
    "path": "debian/oversip.init",
    "chars": 6211,
    "preview": "#! /bin/sh\n\n### BEGIN INIT INFO\n# Provides:          oversip\n# Required-Start:    $syslog $network $remote_fs\n# Required"
  },
  {
    "path": "debian/postrm",
    "chars": 349,
    "preview": "#!/bin/bash\n\n# Doc: http://wiki.debian.org/MaintainerScripts\n\n#DEBHELPER#\n\ncase \"$1\" in\n\n  purge)\n    # Remove the Debia"
  },
  {
    "path": "debian/preinst",
    "chars": 652,
    "preview": "#!/bin/bash\n\n# Doc: http://wiki.debian.org/MaintainerScripts\n\n#DEBHELPER#\n\nset -e\n\n\nOVERSIP_GEM_VERSION=\"2.0.4\"\n\n\ninstal"
  },
  {
    "path": "debian/rules",
    "chars": 1630,
    "preview": "#!/usr/bin/make -f\n# -*- makefile -*-\n\n# Uncomment this to turn on verbose mode.\n#export DH_VERBOSE=1\n\nbuild: build-stam"
  },
  {
    "path": "etc/oversip.conf",
    "chars": 8412,
    "preview": "#\n# OverSIP - Main Configuration.\n#\n#\n# IMPORTANT:\n#   This is a YAML [1] format configuration file. DON'T USE tab for i"
  },
  {
    "path": "etc/proxies.conf",
    "chars": 4373,
    "preview": "#\n# OverSIP - Proxies Configuration.\n#\n#\n# IMPORTANT:\n#   This is a YAML [1] format configuration file. DON'T USE tab fo"
  },
  {
    "path": "etc/server.rb",
    "chars": 9685,
    "preview": "# coding: utf-8\n\n#\n# OverSIP - Server Logic.\n#\n\n\n\n\n### Custom Application Code:\n\n\n# Define here your custom code for the"
  },
  {
    "path": "etc/tls/ca/cacert.pem",
    "chars": 251889,
    "preview": "##\n## Bundle of CA Root Certificates\n##\n## Certificate data from Mozilla downloaded on: Wed Sep  3 03:12:03 2014\n##\n## T"
  },
  {
    "path": "etc/tls/demo-tls.oversip.net.crt",
    "chars": 993,
    "preview": "-----BEGIN CERTIFICATE-----\nMIICrzCCAhigAwIBAgIET/1hdzANBgkqhkiG9w0BAQUFADBxMR0wGwYDVQQDDBRk\nZW1vLXRscy5vdmVyc2lwLm5ldDE"
  },
  {
    "path": "etc/tls/demo-tls.oversip.net.key",
    "chars": 887,
    "preview": "-----BEGIN RSA PRIVATE KEY-----\nMIICWwIBAAKBgQC11ZaMaJGhEceMS9KR+KxHuZYoo5UnCixhSbaRElIhtaTE7Vgs\nTczU2eCepoHRNO7pku+eu7R"
  },
  {
    "path": "etc/tls/upgrade-cacert.sh",
    "chars": 410,
    "preview": "#!/bin/bash\n\n# This script downloads the Root CAs list from Mozilla and stores\n# it under ca/ directory for TLS validati"
  },
  {
    "path": "etc/tls/utils/create-cert.rb",
    "chars": 5844,
    "preview": "#!/usr/bin/env ruby\n\nrequire \"openssl\"\nrequire \"socket\"\nrequire \"readline\"\nrequire \"term/ansicolor\"\n\n\nmodule OverSIP\n  m"
  },
  {
    "path": "etc/tls/utils/get-sip-identities.rb",
    "chars": 2688,
    "preview": "#!/usr/bin/env ruby\n\n# Runs as follows:\n#\n# ~$ ruby get-sip-identities.rb PEM_FILE\n\n\nrequire \"openssl\"\n\n\nmodule TLS\n\n  #"
  },
  {
    "path": "ext/common/c_util.h",
    "chars": 1367,
    "preview": "/*\n * Generic C functions and macros go here, there are no dependencies\n * on OverSIP internal structures or the Ruby C "
  },
  {
    "path": "ext/common/ruby_c_util.h",
    "chars": 1972,
    "preview": "/*\n * Generic Ruby C functions and macros go here.\n */\n\n#ifndef ruby_c_util_h\n#define ruby_c_util_h\n\n\n#include <ruby.h>\n"
  },
  {
    "path": "ext/sip_parser/common_headers.h",
    "chars": 5012,
    "preview": "#ifndef common_headers_h\n#define common_headers_h\n\n#include \"../common/c_util.h\"\n#include \"ruby.h\"\n#include <ctype.h>  /"
  },
  {
    "path": "ext/sip_parser/compile_ragel_files.sh",
    "chars": 507,
    "preview": "#!/bin/bash\n\n\nwhich ragel >/dev/null\nif [ $? -ne 0 ] ; then\n  echo \"ERROR: ragel binary not found, cannot compile the Ra"
  },
  {
    "path": "ext/sip_parser/compile_ragel_sip_message_parser.sh",
    "chars": 346,
    "preview": "#!/bin/bash\n\n\nwhich ragel >/dev/null\nif [ $? -ne 0 ] ; then\n  echo \"ERROR: ragel binary not found, cannot compile the Ra"
  },
  {
    "path": "ext/sip_parser/compile_ragel_sip_uri_parser.sh",
    "chars": 343,
    "preview": "#!/bin/bash\n\n\nwhich ragel >/dev/null\nif [ $? -ne 0 ] ; then\n  echo \"ERROR: ragel binary not found, cannot compile the Ra"
  },
  {
    "path": "ext/sip_parser/ext_help.h",
    "chars": 580,
    "preview": "#ifndef ext_help_h\r\n#define ext_help_h\r\n\r\n#define RAISE_NOT_NULL(T) if(T == NULL) rb_raise(rb_eArgError, \"NULL found for"
  },
  {
    "path": "ext/sip_parser/extconf.rb",
    "chars": 61,
    "preview": "require \"mkmf\"\r\n\r\ncreate_makefile(\"oversip/sip/sip_parser\")\r\n"
  },
  {
    "path": "ext/sip_parser/grammar_absolute_uri.rl",
    "chars": 1810,
    "preview": "%%{\n  machine grammar_absolute_uri;\n\n  abs_uri_reg_name            = ( unreserved | escaped | \"$\" | \",\" | \";\" | \":\" | \"@"
  },
  {
    "path": "ext/sip_parser/grammar_name_addr.rl",
    "chars": 746,
    "preview": "%%{\n  machine grammar_name_addr;\n\n  uri_display_name           = ( quoted_string >uri_display_name_quoted | ( token ( LW"
  },
  {
    "path": "ext/sip_parser/grammar_sip_core.rl",
    "chars": 5024,
    "preview": "%%{\n  machine grammar_sip_core;\n\n  CRLF                        = \"\\r\\n\";\n  DIGIT                       = \"0\"..\"9\";\n  ALP"
  },
  {
    "path": "ext/sip_parser/grammar_sip_headers.rl",
    "chars": 8282,
    "preview": "%%{\n  machine grammar_sip_headers;\n\n  DefinedHeader               = \"Call-ID\"i | \"i\"i |\n                                "
  },
  {
    "path": "ext/sip_parser/grammar_sip_message.rl",
    "chars": 2640,
    "preview": "%%{\n  machine grammar_sip_message;\n\n  include grammar_sip_core    \"grammar_sip_core.rl\";\n\n  Method                      "
  },
  {
    "path": "ext/sip_parser/grammar_sip_uri.rl",
    "chars": 2719,
    "preview": "%%{\n  machine grammar_sip_uri;\n\n  sip_uri_param_unreserved    = \"[\" | \"]\" | \"/\" | \":\" | \"&\" | \"+\" | \"$\";\n  sip_uri_param"
  },
  {
    "path": "ext/sip_parser/grammar_tel_uri.rl",
    "chars": 1603,
    "preview": "%%{\n  machine grammar_tel_uri;\n\n  tel_visual_separator        = \"-\" | \".\" | \"(\" | \")\";\n  tel_phonedigit              = D"
  },
  {
    "path": "ext/sip_parser/sip_message_parser.c",
    "chars": 1126489,
    "preview": "\n#line 1 \"sip_message_parser.rl\"\n#include \"sip_parser.h\"\n#include \"ext_help.h\"\n#include <stdio.h>\n#include <assert.h>\n#i"
  },
  {
    "path": "ext/sip_parser/sip_message_parser.rl",
    "chars": 17568,
    "preview": "#include \"sip_parser.h\"\n#include \"ext_help.h\"\n#include <stdio.h>\n#include <assert.h>\n#include <stdlib.h>\n#include <ctype"
  },
  {
    "path": "ext/sip_parser/sip_parser.h",
    "chars": 8221,
    "preview": "#ifndef sip_parser_h\r\n#define sip_parser_h\r\n\r\n\r\n#include <ruby.h>\r\n#include <sys/types.h>\r\n\r\n\r\nenum data_type {\r\n  sip_r"
  },
  {
    "path": "ext/sip_parser/sip_parser_ruby.c",
    "chars": 40704,
    "preview": "#include <ruby.h>\r\n#include \"ext_help.h\"\r\n#include \"sip_parser.h\"\r\n#include \"common_headers.h\"\r\n#include \"../utils/utils"
  },
  {
    "path": "ext/sip_parser/sip_uri_parser.c",
    "chars": 1507479,
    "preview": "\n#line 1 \"sip_uri_parser.rl\"\n#include \"sip_parser.h\"\n#include \"ext_help.h\"\n#include <stdio.h>\n#include <assert.h>\n#inclu"
  },
  {
    "path": "ext/sip_parser/sip_uri_parser.rl",
    "chars": 6158,
    "preview": "#include \"sip_parser.h\"\n#include \"ext_help.h\"\n#include <stdio.h>\n#include <assert.h>\n#include <stdlib.h>\n#include <ctype"
  },
  {
    "path": "ext/stud/extconf.rb",
    "chars": 875,
    "preview": "require \"mkmf\"\nrequire \"fileutils\"\nrequire \"rbconfig\"\n\n\ndef log(message)\n  puts \"[ext/stud/extconf.rb] #{message}\"\nend\n\n"
  },
  {
    "path": "ext/stun/ext_help.h",
    "chars": 366,
    "preview": "#ifndef ext_help_h\n#define ext_help_h\n\n/* Uncomment for enabling TRACE() function. */\n/*#define DEBUG*/\n\n#ifdef DEBUG\n#d"
  },
  {
    "path": "ext/stun/extconf.rb",
    "chars": 51,
    "preview": "require \"mkmf\"\r\n\r\ncreate_makefile(\"oversip/stun\")\r\n"
  },
  {
    "path": "ext/stun/stun_ruby.c",
    "chars": 13655,
    "preview": "#include <ruby.h>\r\n#include <netinet/in.h>\r\n#include <arpa/inet.h>\r\n#include \"ext_help.h\"\r\n\r\n\r\n#define STUN_MESSAGE_MIN_"
  },
  {
    "path": "ext/utils/compile_ragel_files.sh",
    "chars": 660,
    "preview": "#!/bin/bash\n\n\nwhich ragel >/dev/null\nif [ $? -ne 0 ] ; then\n  echo \"ERROR: ragel binary not found, cannot compile the Ra"
  },
  {
    "path": "ext/utils/ext_help.h",
    "chars": 245,
    "preview": "#ifndef ext_help_h\n#define ext_help_h\n\n/* Uncomment for enabling TRACE() function. */\n/*#define DEBUG*/\n\n#ifdef DEBUG\n#d"
  },
  {
    "path": "ext/utils/extconf.rb",
    "chars": 52,
    "preview": "require \"mkmf\"\r\n\r\ncreate_makefile(\"oversip/utils\")\r\n"
  },
  {
    "path": "ext/utils/grammar_ip.rl",
    "chars": 1612,
    "preview": "%%{\n  machine grammar_ip;\n\n  DIGIT                         = \"0\"..\"9\";\n  HEXDIG                        = DIGIT | \"A\"i | "
  },
  {
    "path": "ext/utils/haproxy_protocol.c",
    "chars": 117357,
    "preview": "\n#line 1 \"haproxy_protocol.rl\"\n#include <stdlib.h>\n#include <string.h>\n#include \"haproxy_protocol.h\"\n\n\n/** machine **/\n\n"
  },
  {
    "path": "ext/utils/haproxy_protocol.h",
    "chars": 730,
    "preview": "#ifndef haproxy_protocol_h\n#define haproxy_protocol_h\n\n\n#include <sys/types.h>\n\n\nenum enum_haproxy_protocol_ip_type {\n  "
  },
  {
    "path": "ext/utils/haproxy_protocol.rl",
    "chars": 1914,
    "preview": "#include <stdlib.h>\n#include <string.h>\n#include \"haproxy_protocol.h\"\n\n\n/** machine **/\n%%{\n  machine utils_haproxy_prot"
  },
  {
    "path": "ext/utils/ip_utils.c",
    "chars": 109861,
    "preview": "\n#line 1 \"ip_utils.rl\"\n#include <stdlib.h>\n#include \"ip_utils.h\"\n\n\n/** machine **/\n\n#line 29 \"ip_utils.rl\"\n\n\n/** Data **"
  },
  {
    "path": "ext/utils/ip_utils.h",
    "chars": 1642,
    "preview": "#ifndef ip_utils_h\r\n#define ip_utils_h\r\n\r\n#include <string.h>\r\n#include <netinet/in.h>\r\n#include <sys/types.h>\r\n#include"
  },
  {
    "path": "ext/utils/ip_utils.rl",
    "chars": 897,
    "preview": "#include <stdlib.h>\n#include \"ip_utils.h\"\n\n\n/** machine **/\n%%{\n  machine utils_ip_parser;\n\n\n  action is_ipv4 {\n    ip_t"
  },
  {
    "path": "ext/utils/outbound_utils.c",
    "chars": 61295,
    "preview": "\n#line 1 \"outbound_utils.rl\"\n#include <stdlib.h>\n#include <string.h>\n#include \"outbound_utils.h\"\n\n\n/** machine **/\n\n#lin"
  },
  {
    "path": "ext/utils/outbound_utils.h",
    "chars": 714,
    "preview": "#ifndef outbound_utils_h\n#define outbound_utils_h\n\n\n#include <sys/types.h>\n\n\nenum enum_outbound_udp_flow_token_ip_type {"
  },
  {
    "path": "ext/utils/outbound_utils.rl",
    "chars": 1642,
    "preview": "#include <stdlib.h>\n#include <string.h>\n#include \"outbound_utils.h\"\n\n\n/** machine **/\n%%{\n  machine utils_outbound_udp_f"
  },
  {
    "path": "ext/utils/utils_ruby.c",
    "chars": 10654,
    "preview": "#include <ruby.h>\r\n#include \"ext_help.h\"\r\n#include \"ip_utils.h\"\r\n#include \"utils_ruby.h\"\r\n#include \"../common/c_util.h\"\r"
  },
  {
    "path": "ext/utils/utils_ruby.h",
    "chars": 2227,
    "preview": "/*\n * This file is not used by Ruby OverSIP::Utils module itself, its aim is to\n * be included by other OverSIP Ruby C e"
  },
  {
    "path": "ext/websocket_framing_utils/ext_help.h",
    "chars": 579,
    "preview": "#ifndef ext_help_h\r\n#define ext_help_h\r\n\r\n#define RAISE_NOT_NULL(T) if(T == NULL) rb_raise(rb_eArgError, \"NULL found for"
  },
  {
    "path": "ext/websocket_framing_utils/extconf.rb",
    "chars": 73,
    "preview": "require \"mkmf\"\r\n\r\ncreate_makefile(\"oversip/websocket/ws_framing_utils\")\r\n"
  },
  {
    "path": "ext/websocket_framing_utils/ws_framing_utils.h",
    "chars": 1746,
    "preview": "#ifndef ws_framing_utils_h\n#define ws_framing_utils_h\n\n\n#include <stdint.h>\n\n\n/* Extracted from http://bjoern.hoehrmann."
  },
  {
    "path": "ext/websocket_framing_utils/ws_framing_utils_ruby.c",
    "chars": 3068,
    "preview": "#include <ruby.h>\n#include \"ws_framing_utils.h\"\n#include \"ext_help.h\"\n\n\nstatic VALUE mOverSIP;\nstatic VALUE mWebSocket;\n"
  },
  {
    "path": "ext/websocket_http_parser/compile_ragel_files.sh",
    "chars": 342,
    "preview": "#!/bin/bash\n\n\nwhich ragel >/dev/null\nif [ $? -ne 0 ] ; then\n  echo \"ERROR: ragel binary not found, cannot compile the Ra"
  },
  {
    "path": "ext/websocket_http_parser/ext_help.h",
    "chars": 579,
    "preview": "#ifndef ext_help_h\r\n#define ext_help_h\r\n\r\n#define RAISE_NOT_NULL(T) if(T == NULL) rb_raise(rb_eArgError, \"NULL found for"
  },
  {
    "path": "ext/websocket_http_parser/extconf.rb",
    "chars": 71,
    "preview": "require \"mkmf\"\r\n\r\ncreate_makefile(\"oversip/websocket/ws_http_parser\")\r\n"
  },
  {
    "path": "ext/websocket_http_parser/grammar_ws_http_core.rl",
    "chars": 4655,
    "preview": "%%{\n  machine grammar_ws_http_core;\n\n  CRLF                  = \"\\r\\n\";\n  CTL                   = (cntrl | 127);\n  DIGIT "
  },
  {
    "path": "ext/websocket_http_parser/grammar_ws_http_headers.rl",
    "chars": 3838,
    "preview": "%%{\n  machine grammar_ws_http_headers;\n\n  DefinedHeader               = \"Content-Length\"i |\n                            "
  },
  {
    "path": "ext/websocket_http_parser/grammar_ws_http_request.rl",
    "chars": 1173,
    "preview": "%%{\n  machine grammar_ws_http_request;\n\n  include grammar_ws_http_core  \"grammar_ws_http_core.rl\";\n  include grammar_ws_"
  },
  {
    "path": "ext/websocket_http_parser/ws_http_parser.c",
    "chars": 51912,
    "preview": "\n#line 1 \"ws_http_parser.rl\"\n#include \"ws_http_parser.h\"\n#include \"ext_help.h\"\n#include <stdio.h>\n#include <assert.h>\n#i"
  },
  {
    "path": "ext/websocket_http_parser/ws_http_parser.h",
    "chars": 2688,
    "preview": "#ifndef ws_http_parser_h\r\n#define ws_http_parser_h\r\n\r\n\r\n#include <sys/types.h>\r\n\r\n#if defined(_WIN32)\r\n#include <stddef."
  },
  {
    "path": "ext/websocket_http_parser/ws_http_parser.rl",
    "chars": 5794,
    "preview": "#include \"ws_http_parser.h\"\n#include \"ext_help.h\"\n#include <stdio.h>\n#include <assert.h>\n#include <stdlib.h>\n#include <c"
  },
  {
    "path": "ext/websocket_http_parser/ws_http_parser_ruby.c",
    "chars": 16632,
    "preview": "#include <ruby.h>\r\n#include \"ext_help.h\"\r\n#include \"ws_http_parser.h\"\r\n#include \"../utils/utils_ruby.h\"\r\n#include \"../co"
  },
  {
    "path": "lib/oversip/config.rb",
    "chars": 22097,
    "preview": "module OverSIP\n\n  module Config\n\n    # Pre-declaration of Validators module (defined in other file).\n    module Config::"
  },
  {
    "path": "lib/oversip/config_validators.rb",
    "chars": 2822,
    "preview": "require \"openssl\"\n\n\nmodule OverSIP\n\n  module Config\n\n    module Validators\n\n      extend ::OverSIP::Logger\n\n      DOMAIN"
  },
  {
    "path": "lib/oversip/default_server.rb",
    "chars": 705,
    "preview": "module OverSIP\n\n  module SystemEvents\n\n    extend ::OverSIP::Logger\n\n    def self.on_initialize\n    end\n\n    def self.on"
  },
  {
    "path": "lib/oversip/errors.rb",
    "chars": 178,
    "preview": "module OverSIP\n\n  class Error < ::StandardError ; end\n\n  class ConfigurationError < Error ; end\n  class RuntimeError < E"
  },
  {
    "path": "lib/oversip/fiber_pool.rb",
    "chars": 1308,
    "preview": "# NOTE: Extracted from https://github.com/schmurfy/fiber_pool.\n\nmodule OverSIP\n  class FiberPool\n\n    # Prepare a list o"
  },
  {
    "path": "lib/oversip/launcher.rb",
    "chars": 22147,
    "preview": "module OverSIP::Launcher\n\n  extend ::OverSIP::Logger\n\n  READY_PIPE_TIMEOUT = 16\n\n  @log_id = \"launcher\"\n\n\n  def self.dae"
  },
  {
    "path": "lib/oversip/logger.rb",
    "chars": 2609,
    "preview": "module OverSIP\n\n  # Logging client module. Any class desiring to log messages must include (or extend) this module.\n  # "
  },
  {
    "path": "lib/oversip/modules/outbound_mangling.rb",
    "chars": 2110,
    "preview": "module OverSIP::Modules\n\n  module OutboundMangling\n\n    extend ::OverSIP::Logger\n\n    @log_id = \"OutboundMangling module"
  },
  {
    "path": "lib/oversip/modules/user_assertion.rb",
    "chars": 2683,
    "preview": "module OverSIP::Modules\n\n  module UserAssertion\n\n    extend ::OverSIP::Logger\n\n    @log_id = \"UserAssertion module\"\n\n   "
  },
  {
    "path": "lib/oversip/proxies_config.rb",
    "chars": 7354,
    "preview": "module OverSIP\n\n  module ProxiesConfig\n\n    extend ::OverSIP::Logger\n    extend ::OverSIP::Config::Validators\n\n    def s"
  },
  {
    "path": "lib/oversip/ruby_ext/eventmachine.rb",
    "chars": 995,
    "preview": "module EventMachine\n\n  # Fast method for setting an outgoing TCP connection.\n  def self.oversip_connect_tcp_server bind_"
  },
  {
    "path": "lib/oversip/sip/client.rb",
    "chars": 12858,
    "preview": "module OverSIP::SIP\n\n  class Client\n\n    include ::OverSIP::Logger\n\n    attr_reader :request, :current_target\n\n    def i"
  },
  {
    "path": "lib/oversip/sip/client_transaction.rb",
    "chars": 19694,
    "preview": "module OverSIP::SIP\n\n  class ClientTransaction\n\n    include ::OverSIP::Logger\n\n    def self.get_class request\n      case"
  },
  {
    "path": "lib/oversip/sip/constants.rb",
    "chars": 3071,
    "preview": "module OverSIP::SIP\n\n  CRLF = \"\\r\\n\"\n  DOUBLE_CRLF = \"\\r\\n\\r\\n\"\n\n  # DOC: http://www.iana.org/assignments/sip-parameters"
  },
  {
    "path": "lib/oversip/sip/core.rb",
    "chars": 7353,
    "preview": "module OverSIP::SIP\n\n  # This module is included by OverSIP::SIP::Request class.\n  module Core\n\n    # Create a server tr"
  },
  {
    "path": "lib/oversip/sip/launcher.rb",
    "chars": 9807,
    "preview": "module OverSIP::SIP\n\n  module Launcher\n\n    extend ::OverSIP::Logger\n\n    IP_TYPE = {\n      :ipv4 => \"IPv4\",\n      :ipv6"
  },
  {
    "path": "lib/oversip/sip/listeners/connection.rb",
    "chars": 1223,
    "preview": "module OverSIP::SIP\n\n  class Connection < ::EM::Connection\n\n    include ::OverSIP::Logger\n    include ::OverSIP::SIP::Me"
  },
  {
    "path": "lib/oversip/sip/listeners/ipv4_tcp_client.rb",
    "chars": 593,
    "preview": "module OverSIP::SIP\n\n  class IPv4TcpClient < TcpClient\n\n    @ip_type = :ipv4\n    @transport = :tcp\n    @server_class = :"
  },
  {
    "path": "lib/oversip/sip/listeners/ipv4_tcp_server.rb",
    "chars": 436,
    "preview": "module OverSIP::SIP\n\n  class IPv4TcpServer < TcpServer\n\n    @ip_type = :ipv4\n    @transport = :tcp\n    @connections = {}"
  },
  {
    "path": "lib/oversip/sip/listeners/ipv4_tls_client.rb",
    "chars": 593,
    "preview": "module OverSIP::SIP\n\n  class IPv4TlsClient < TlsClient\n\n    @ip_type = :ipv4\n    @transport = :tls\n    @server_class = :"
  },
  {
    "path": "lib/oversip/sip/listeners/ipv4_tls_server.rb",
    "chars": 436,
    "preview": "module OverSIP::SIP\n\n  class IPv4TlsServer < TlsServer\n\n    @ip_type = :ipv4\n    @transport = :tls\n    @connections = {}"
  },
  {
    "path": "lib/oversip/sip/listeners/ipv4_tls_tunnel_server.rb",
    "chars": 455,
    "preview": "module OverSIP::SIP\n\n  class IPv4TlsTunnelServer < TlsTunnelServer\n\n    @ip_type = :ipv4\n    @transport = :tls\n    @conn"
  },
  {
    "path": "lib/oversip/sip/listeners/ipv4_udp_server.rb",
    "chars": 454,
    "preview": "module OverSIP::SIP\n\n  class IPv4UdpServer < UdpConnection\n\n    @ip_type = :ipv4\n    @transport = :udp\n    @connections "
  },
  {
    "path": "lib/oversip/sip/listeners/ipv6_tcp_client.rb",
    "chars": 593,
    "preview": "module OverSIP::SIP\n\n  class IPv6TcpClient < TcpClient\n\n    @ip_type = :ipv6\n    @transport = :tcp\n    @server_class = :"
  },
  {
    "path": "lib/oversip/sip/listeners/ipv6_tcp_server.rb",
    "chars": 436,
    "preview": "module OverSIP::SIP\n\n  class IPv6TcpServer < TcpServer\n\n    @ip_type = :ipv6\n    @transport = :tcp\n    @connections = {}"
  },
  {
    "path": "lib/oversip/sip/listeners/ipv6_tls_client.rb",
    "chars": 593,
    "preview": "module OverSIP::SIP\n\n  class IPv6TlsClient < TlsClient\n\n    @ip_type = :ipv6\n    @transport = :tls\n    @server_class = :"
  },
  {
    "path": "lib/oversip/sip/listeners/ipv6_tls_server.rb",
    "chars": 436,
    "preview": "module OverSIP::SIP\n\n  class IPv6TlsServer < TlsServer\n\n    @ip_type = :ipv6\n    @transport = :tls\n    @connections = {}"
  },
  {
    "path": "lib/oversip/sip/listeners/ipv6_tls_tunnel_server.rb",
    "chars": 455,
    "preview": "module OverSIP::SIP\n\n  class IPv6TlsTunnelServer < TlsTunnelServer\n\n    @ip_type = :ipv6\n    @transport = :tls\n    @conn"
  },
  {
    "path": "lib/oversip/sip/listeners/ipv6_udp_server.rb",
    "chars": 454,
    "preview": "module OverSIP::SIP\n\n  class IPv6UdpServer < UdpConnection\n\n    @ip_type = :ipv6\n    @transport = :udp\n    @connections "
  },
  {
    "path": "lib/oversip/sip/listeners/tcp_client.rb",
    "chars": 2986,
    "preview": "module OverSIP::SIP\n\n  class TcpClient < TcpConnection\n\n    class << self\n      attr_reader :server_class\n    end\n\n    a"
  },
  {
    "path": "lib/oversip/sip/listeners/tcp_connection.rb",
    "chars": 6379,
    "preview": "module OverSIP::SIP\n\n  class TcpConnection < Connection\n\n    # Max size (bytes) of the buffered data when receiving mess"
  },
  {
    "path": "lib/oversip/sip/listeners/tcp_server.rb",
    "chars": 2409,
    "preview": "module OverSIP::SIP\n\n  class TcpServer < TcpConnection\n\n    attr_reader :outbound_flow_token\n\n    def post_connection\n  "
  },
  {
    "path": "lib/oversip/sip/listeners/tls_client.rb",
    "chars": 3959,
    "preview": "module OverSIP::SIP\n\n  class TlsClient < TcpClient\n\n    TLS_HANDSHAKE_MAX_TIME = 4\n\n\n    attr_writer :callback_on_server"
  },
  {
    "path": "lib/oversip/sip/listeners/tls_server.rb",
    "chars": 2903,
    "preview": "module OverSIP::SIP\n\n  class TlsServer < TcpServer\n\n    TLS_HANDSHAKE_MAX_TIME = 4\n\n\n    def post_init\n      @client_pem"
  },
  {
    "path": "lib/oversip/sip/listeners/tls_tunnel_connection.rb",
    "chars": 2409,
    "preview": "module OverSIP::SIP\n\n  class TlsTunnelConnection < TcpConnection\n\n    # Max size (bytes) of the buffered data when recei"
  },
  {
    "path": "lib/oversip/sip/listeners/tls_tunnel_server.rb",
    "chars": 1855,
    "preview": "module OverSIP::SIP\n\n  class TlsTunnelServer < TlsTunnelConnection\n\n    attr_reader :outbound_flow_token\n\n    def post_c"
  },
  {
    "path": "lib/oversip/sip/listeners/udp_connection.rb",
    "chars": 7197,
    "preview": "module OverSIP::SIP\n\n  class UdpConnection < Connection\n\n    def receive_data data\n      @buffer << data\n\n      while (c"
  },
  {
    "path": "lib/oversip/sip/listeners.rb",
    "chars": 1021,
    "preview": "# OverSIP files\n\nrequire \"oversip/sip/listeners/connection\"\nrequire \"oversip/sip/listeners/udp_connection\"\nrequire \"over"
  },
  {
    "path": "lib/oversip/sip/message.rb",
    "chars": 5404,
    "preview": "module OverSIP::SIP\n\n  class Message\n\n    include ::OverSIP::Logger\n\n    DIALOG_FORMING_METHODS = { :INVITE=>true, :SUBS"
  },
  {
    "path": "lib/oversip/sip/message_processor.rb",
    "chars": 7842,
    "preview": "module OverSIP::SIP\n\n  module MessageProcessor\n\n    # Constants for efficiency.\n    MSG_TYPE = {\n      ::OverSIP::SIP::R"
  },
  {
    "path": "lib/oversip/sip/name_addr.rb",
    "chars": 1176,
    "preview": "module OverSIP::SIP\n\n  class NameAddr < OverSIP::SIP::Uri\n\n    attr_reader :display_name\n\n\n    def self.parse value\n    "
  },
  {
    "path": "lib/oversip/sip/proxy.rb",
    "chars": 11771,
    "preview": "module OverSIP::SIP\n\n  class Proxy < Client\n\n    # If a SIP response is given then this method may offer other features "
  },
  {
    "path": "lib/oversip/sip/request.rb",
    "chars": 5245,
    "preview": "module OverSIP::SIP\n\n  class Request < Message\n\n    include ::OverSIP::SIP::Core\n\n    SECURE_TRANSPORTS = { :tls=>true, "
  },
  {
    "path": "lib/oversip/sip/response.rb",
    "chars": 876,
    "preview": "module OverSIP::SIP\n\n  class Response < Message\n\n    attr_accessor :status_code\n    attr_accessor :reason_phrase\n    att"
  },
  {
    "path": "lib/oversip/sip/rfc3263.rb",
    "chars": 21219,
    "preview": "module OverSIP::SIP\n\n  module RFC3263\n\n    Target = ::Struct.new(:transport, :ip, :ip_type, :port)\n\n    class Target\n   "
  },
  {
    "path": "lib/oversip/sip/server_transaction.rb",
    "chars": 8115,
    "preview": "module OverSIP::SIP\n\n  class ServerTransaction\n\n    include ::OverSIP::Logger\n\n    attr_reader :request\n    attr_accesso"
  },
  {
    "path": "lib/oversip/sip/sip.rb",
    "chars": 2330,
    "preview": "module OverSIP::SIP\n\n  def self.module_init\n    conf = ::OverSIP.configuration\n\n    @local_ipv4 = conf[:sip][:listen_ipv"
  },
  {
    "path": "lib/oversip/sip/tags.rb",
    "chars": 967,
    "preview": "module OverSIP::SIP\n\n  module Tags\n\n    PREFIX_FOR_TOTAG_SL_REPLIED = ::SecureRandom.hex(4) + \".\"\n    REGEX_PREFIX_FOR_T"
  },
  {
    "path": "lib/oversip/sip/timers.rb",
    "chars": 2166,
    "preview": "module OverSIP::SIP\n\n  ### SIP timer values.\n  #\n  # RTT Estimate (RFC 3261 17.1.2.1).\n  T1          = 0.5\n  # The maxim"
  },
  {
    "path": "lib/oversip/sip/transport_manager.rb",
    "chars": 5263,
    "preview": "module OverSIP::SIP\n\n  module TransportManager\n\n    extend ::OverSIP::Logger\n\n    @log_id = \"TransportManager\"\n    @outb"
  },
  {
    "path": "lib/oversip/sip/uac.rb",
    "chars": 2807,
    "preview": "module OverSIP::SIP\n\n  class Uac < Client\n\n    def route request, dst_host=nil, dst_port=nil, dst_transport=nil\n      un"
  },
  {
    "path": "lib/oversip/sip/uac_request.rb",
    "chars": 2290,
    "preview": "module OverSIP::SIP\n\n  class UacRequest\n\n    DEFAULT_MAX_FORWARDS = \"20\"\n    DEFAULT_FROM = \"\\\"OverSIP #{::OverSIP::VERS"
  },
  {
    "path": "lib/oversip/sip/uri.rb",
    "chars": 4392,
    "preview": "module OverSIP::SIP\n\n  class Uri\n    attr_reader :scheme, :user, :host, :host_type, :port, :params, :transport_param, :p"
  },
  {
    "path": "lib/oversip/syslog.rb",
    "chars": 1813,
    "preview": "module OverSIP\n\n  module Syslog\n\n    SYSLOG_FACILITY_MAPPING = {\n      \"kern\"    => ::Syslog::LOG_KERN,\n      \"user\"    "
  },
  {
    "path": "lib/oversip/system_callbacks.rb",
    "chars": 1045,
    "preview": "module OverSIP\n\n  # This module is intended for 3rd party modules that need custom code to be\n  # executed when OverSIP "
  },
  {
    "path": "lib/oversip/tls.rb",
    "chars": 5587,
    "preview": "module OverSIP\n\n  module TLS\n\n    extend ::OverSIP::Logger\n\n    TLS_PEM_CHAIN_REGEXP = /-{5}BEGIN CERTIFICATE-{5}\\n.*?-{"
  },
  {
    "path": "lib/oversip/utils.rb",
    "chars": 1097,
    "preview": "module OverSIP\n\n  module Utils\n\n    # It ensures that two identical byte secuences are matched regardless\n    # they hav"
  },
  {
    "path": "lib/oversip/version.rb",
    "chars": 535,
    "preview": "# -*- encoding: utf-8 -*-\n\nmodule OverSIP\n\n  module Version\n    MAJOR = 2\n    MINOR = 0\n    TINY  = 4\n    DEVEL = nil  #"
  },
  {
    "path": "lib/oversip/websocket/constants.rb",
    "chars": 1474,
    "preview": "module OverSIP::WebSocket\n\n  CRLF = \"\\r\\n\"\n\n  REASON_PHRASE = {\n    100 => \"Continue\",\n    101 => \"Switching Protocols\","
  },
  {
    "path": "lib/oversip/websocket/http_request.rb",
    "chars": 1400,
    "preview": "module OverSIP::WebSocket\n\n  class HttpRequest < ::Hash\n\n    include ::OverSIP::Logger\n\n    attr_accessor :connection\n\n "
  },
  {
    "path": "lib/oversip/websocket/launcher.rb",
    "chars": 8068,
    "preview": "module OverSIP::WebSocket\n\n  module Launcher\n\n    extend ::OverSIP::Logger\n\n    IP_TYPE = {\n      :ipv4 => \"IPv4\",\n     "
  },
  {
    "path": "lib/oversip/websocket/listeners/connection.rb",
    "chars": 1197,
    "preview": "module OverSIP::WebSocket\n\n  class Connection < ::EM::Connection\n\n    include ::OverSIP::Logger\n    include ::OverSIP::S"
  },
  {
    "path": "lib/oversip/websocket/listeners/ipv4_ws_server.rb",
    "chars": 438,
    "preview": "module OverSIP::WebSocket\n\n  class IPv4WsServer < WsServer\n\n    @ip_type = :ipv4\n    @transport = :ws\n    @connections ="
  },
  {
    "path": "lib/oversip/websocket/listeners/ipv4_wss_server.rb",
    "chars": 443,
    "preview": "module OverSIP::WebSocket\n\n  class IPv4WssServer < WssServer\n\n    @ip_type = :ipv4\n    @transport = :wss\n    @connection"
  },
  {
    "path": "lib/oversip/websocket/listeners/ipv4_wss_tunnel_server.rb",
    "chars": 462,
    "preview": "module OverSIP::WebSocket\n\n  class IPv4WssTunnelServer < WssTunnelServer\n\n    @ip_type = :ipv4\n    @transport = :wss\n   "
  },
  {
    "path": "lib/oversip/websocket/listeners/ipv6_ws_server.rb",
    "chars": 438,
    "preview": "module OverSIP::WebSocket\n\n  class IPv6WsServer < WsServer\n\n    @ip_type = :ipv6\n    @transport = :ws\n    @connections ="
  },
  {
    "path": "lib/oversip/websocket/listeners/ipv6_wss_server.rb",
    "chars": 443,
    "preview": "module OverSIP::WebSocket\n\n  class IPv6WssServer < WssServer\n\n    @ip_type = :ipv6\n    @transport = :wss\n    @connection"
  },
  {
    "path": "lib/oversip/websocket/listeners/ipv6_wss_tunnel_server.rb",
    "chars": 461,
    "preview": "module OverSIP::WebSocket\n\n  class IPv6WssTunnelServer < WssTunnelServer\n\n    @ip_type = :ipv6\n    @transport = :wss\n   "
  },
  {
    "path": "lib/oversip/websocket/listeners/ws_server.rb",
    "chars": 10181,
    "preview": "module OverSIP::WebSocket\n\n  class WsServer < Connection\n\n   # Max size (bytes) of the buffered data when receiving HTTP"
  },
  {
    "path": "lib/oversip/websocket/listeners/wss_server.rb",
    "chars": 3044,
    "preview": "module OverSIP::WebSocket\n\n  class WssServer < WsServer\n\n    TLS_HANDSHAKE_MAX_TIME = 4\n\n\n    def post_init\n      @clien"
  },
  {
    "path": "lib/oversip/websocket/listeners/wss_tunnel_server.rb",
    "chars": 3845,
    "preview": "module OverSIP::WebSocket\n\n  class WssTunnelServer < WsServer\n\n    def post_connection\n      begin\n        # Temporal @r"
  },
  {
    "path": "lib/oversip/websocket/listeners.rb",
    "chars": 556,
    "preview": "# OverSIP files\n\nrequire \"oversip/websocket/listeners/connection\"\nrequire \"oversip/websocket/listeners/ws_server\"\nrequir"
  },
  {
    "path": "lib/oversip/websocket/websocket.rb",
    "chars": 278,
    "preview": "module OverSIP::WebSocket\n\n  def self.module_init\n    conf = ::OverSIP.configuration\n\n    @callback_on_client_tls_handsh"
  },
  {
    "path": "lib/oversip/websocket/ws_framing.rb",
    "chars": 16975,
    "preview": "module OverSIP::WebSocket\n\n  class WsFraming\n\n    include ::OverSIP::Logger\n\n    OPCODE = {\n      0  => :continuation,\n "
  },
  {
    "path": "lib/oversip/websocket/ws_sip_app.rb",
    "chars": 3571,
    "preview": "module OverSIP::WebSocket\n\n  class WsSipApp\n\n    include ::OverSIP::Logger\n    include ::OverSIP::SIP::MessageProcessor\n"
  },
  {
    "path": "lib/oversip.rb",
    "chars": 3244,
    "preview": "#\n# OverSIP\n# Copyright (c) 2012-2014 Iñaki Baz Castillo <ibc@aliax.net>\n# MIT License\n#\n\n# Ruby built-in libraries.\n\nre"
  },
  {
    "path": "oversip.gemspec",
    "chars": 2894,
    "preview": "require \"./lib/oversip/version\"\n\n::Gem::Specification.new do |spec|\n  spec.name = \"oversip\"\n  spec.version = ::OverSIP::"
  },
  {
    "path": "test/oversip_test_helper.rb",
    "chars": 347,
    "preview": "require \"test/unit\"\nrequire \"oversip\"\n\n\nclass OverSIPTest < Test::Unit::TestCase\n\n  def assert_true(object, message=\"\")\n"
  },
  {
    "path": "test/test_http_parser.rb",
    "chars": 2132,
    "preview": "# coding: utf-8\n\nrequire \"oversip_test_helper\"\n\n\nclass TestHttpParser < OverSIPTest\n\n  def parse data\n    parser = OverS"
  },
  {
    "path": "test/test_name_addr.rb",
    "chars": 836,
    "preview": "# coding: utf-8\n\nrequire \"oversip_test_helper\"\n\n\nclass TestNameAddr < OverSIPTest\n\n  def test_name_addr\n    full_name_ad"
  },
  {
    "path": "test/test_name_addr_parser.rb",
    "chars": 703,
    "preview": "# coding: utf-8\n\nrequire \"oversip_test_helper\"\n\n\nclass TestNameAddrParser < OverSIPTest\n\n  def test_parse_name_addr\n    "
  },
  {
    "path": "test/test_sip_message_parser.rb",
    "chars": 5774,
    "preview": "# coding: utf-8\n\nrequire \"oversip_test_helper\"\n\n\nclass TestSipMessageParser < OverSIPTest\n\n  def parse data\n    parser ="
  },
  {
    "path": "test/test_sip_uri_parser.rb",
    "chars": 1507,
    "preview": "# coding: utf-8\n\nrequire \"oversip_test_helper\"\n\n\nclass TestSipUriParser < OverSIPTest\n\n  def test_parse_sip_uri\n    uri_"
  },
  {
    "path": "test/test_uri.rb",
    "chars": 1749,
    "preview": "# coding: utf-8\n\nrequire \"oversip_test_helper\"\n\n\nclass TestUri < OverSIPTest\n\n  def test_sip_uri\n    full_uri = \"sips:i%"
  },
  {
    "path": "thirdparty/stud/NOTES",
    "chars": 198,
    "preview": "- stud's original Makefile has been modified for adding /usr/include/libev into the library path (workaround for CentOS)"
  }
]

About this extraction

This page contains the full source code of the versatica/OverSIP GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 167 files (3.6 MB), approximately 958.3k tokens, and a symbol index with 787 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!