diff --git a/externals/stripe-php/.travis.yml b/externals/stripe-php/.travis.yml deleted file mode 100644 --- a/externals/stripe-php/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: php - -php: - - 5.2 - - 5.3 - - 5.4 - - 5.5 - - 5.6 - - hhvm - -before_script: - - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.2' ]; then wget http://iweb.dl.sourceforge.net/project/simpletest/simpletest/simpletest_1.1/simpletest_1.1.0.tar.gz; tar xf simpletest_1.1.0.tar.gz -C test; else composer install --dev --prefer-source; fi" - - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.6' ]; then pear install pear/PHP_CodeSniffer; phpenv rehash; fi" - -script: - - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.6' ]; then phpcs --standard=zend --encoding=UTF-8 --ignore=vendor -p ./; fi" - - php test/Stripe.php diff --git a/externals/stripe-php/CHANGELOG b/externals/stripe-php/CHANGELOG deleted file mode 100644 --- a/externals/stripe-php/CHANGELOG +++ /dev/null @@ -1,156 +0,0 @@ -=== 1.16.0 2014-06-17 - -* Add metadata for refunds and disputes - -=== 1.15.0 2014-05-28 - -* Support canceling transfers - -=== 1.14.1 2014-05-21 - -* Support cards for recipients. - -=== 1.13.1 2014-05-15 - -* Fix bug in account resource where `id` wasn't in the result - -=== 1.13.0 2014-04-10 - -* Add support for certificate blacklisting -* Update ca bundle -* Drop support for HHVM (Temporarily) - -=== 1.12.0 2014-04-01 - -* Add Stripe_RateLimitError for catching rate limit errors. -* Update to Zend coding style (thanks, @jpiasetz) - -=== 1.11.0 2014-01-29 - -* Add support for multiple subscriptions per customer - -=== 1.10.1 2013-12-02 - -* Add new ApplicationFee - -=== 1.9.1 2013-11-08 - -* Fix a bug where a null nestable object causes warnings to fire. - -=== 1.9.0 2013-10-16 - -* Add support for metadata API. - -=== 1.8.4 2013-09-18 - -* Add support for closing disputes. - -=== 1.8.3 2013-08-13 - -* Add new Balance and BalanceTransaction - -=== 1.8.2 2013-08-12 - -* Add support for unsetting attributes by updating to NULL. - Setting properties to a blank string is now an error. - -=== 1.8.1 2013-07-12 - -* Add support for multiple cards API (Stripe API version 2013-07-12: https://stripe.com/docs/upgrades#2013-07-05) - -=== 1.8.0 2013-04-11 - -* Allow Transfers to be creatable -* Add new Recipient resource - -=== 1.7.15 2013-02-21 - -* Add 'id' to the list of permanent object attributes - -=== 1.7.14 2013-02-20 - -* Don't re-encode strings that are already encoded in UTF-8. If you - were previously using plan or coupon objects with UTF-8 IDs, they - may have been treated as ISO-8859-1 (Latin-1) and encoded to UTF-8 a - 2nd time. You may now need to pass the IDs to utf8_encode before - passing them to Stripe_Plan::retrieve or Stripe_Coupon::retrieve. -* Ensure that all input is encoded in UTF-8 before submitting it to - Stripe's servers. (github issue #27) - -=== 1.7.13 2013-02-01 - -* Add support for passing options when retrieving Stripe objects - e.g., Stripe_Charge::retrieve(array("id"=>"foo", "expand" => array("customer"))) - Stripe_Charge::retrieve("foo") will continue to work - -=== 1.7.12 2013-01-15 - -* Add support for setting a Stripe API version override - -=== 1.7.11 2012-12-30 - -* Version bump to cleanup constants and such (github issue #26) - -=== 1.7.10 2012-11-08 - -* Add support for updating charge disputes. -* Fix bug preventing retrieval of null attributes - -=== 1.7.9 2012-11-08 - -* Fix usage under autoloaders such as the one generated by composer - (github issue #22) - -=== 1.7.8 2012-10-30 -* Add support for creating invoices. -* Add support for new invoice lines return format -* Add support for new list objects - -=== 1.7.7 2012-09-14 - -* Get all of the various version numbers in the repo in sync (no other - changes) - -=== 1.7.6 2012-08-31 - -* Add update and pay methods to Invoice resource - -=== 1.7.5 2012-08-23 - -* Change internal function names so that Stripe_SingletonApiRequest is - E_STRICT-clean (github issue #16) - -=== 1.7.4 2012-08-21 - -* Bugfix so that Stripe objects (e.g. Customer, Charge objects) used - in API calls are transparently converted to their object IDs - -=== 1.7.3 2012-08-15 - -* Add new Account resource - -=== 1.7.2 2012-06-26 - -* Make clearer that you should be including lib/Stripe.php, not - test/Stripe.php (github issue #14) - -=== 1.7.1 2012-05-24 - -* Add missing argument to Stripe_InvalidRequestError constructor in - Stripe_ApiResource::instanceUrl. Fixes a warning when - Stripe_ApiResource::instanceUrl is called on a resource with no ID - (github issue #12) - -=== 1.7.0 2012-05-17 - -* Support Composer and Packagist (github issue #9) - -* Add new deleteDiscount method to Stripe_Customer - -* Add new Transfer resource - -* Switch from using HTTP Basic auth to Bearer auth. (Note: Stripe will - support Basic auth for the indefinite future, but recommends Bearer - auth when possible going forward) - -* Numerous test suite improvements diff --git a/externals/stripe-php/LICENSE b/externals/stripe-php/LICENSE deleted file mode 100644 --- a/externals/stripe-php/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2010-2014 Stripe - -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. diff --git a/externals/stripe-php/README.rdoc b/externals/stripe-php/README.rdoc deleted file mode 100644 --- a/externals/stripe-php/README.rdoc +++ /dev/null @@ -1,67 +0,0 @@ -= Stripe PHP bindings -{Build Status}[https://travis-ci.org/stripe/stripe-php] -{Latest Stable Version}[https://packagist.org/packages/stripe/stripe-php] -{Total Downloads}[https://packagist.org/packages/stripe/stripe-php] -{License}[https://packagist.org/packages/stripe/stripe-php] - -You can sign up for a Stripe account at https://stripe.com. - -== Requirements - -PHP 5.2 and later. - -== Composer - -You can install the bindings via Composer[http://getcomposer.org/]. Add this to your +composer.json+: - - { - "require": { - "stripe/stripe-php": "1.*" - } - } - -Then install via: - - composer.phar install - -To use the bindings, either user Composer's autoload[https://getcomposer.org/doc/00-intro.md#autoloading]: - - require_once('vendor/autoload.php'); - -Or manually: - - require_once('/path/to/vendor/stripe/stripe-php/lib/Stripe.php'); - -== Manual Installation - -Obtain the latest version of the Stripe PHP bindings with: - - git clone https://github.com/stripe/stripe-php - -To use the bindings, add the following to your PHP script: - - require_once("/path/to/stripe-php/lib/Stripe.php"); - -== Getting Started - -Simple usage looks like: - - Stripe::setApiKey('d8e8fca2dc0f896fd7cb4cb0031ba249'); - $myCard = array('number' => '4242424242424242', 'exp_month' => 5, 'exp_year' => 2015); - $charge = Stripe_Charge::create(array('card' => $myCard, 'amount' => 2000, 'currency' => 'usd')); - echo $charge; - -== Documentation - -Please see https://stripe.com/api for up-to-date documentation. - -== Tests - -In order to run tests you have to install SimpleTest[http://packagist.org/packages/simpletest/simpletest] via Composer[http://getcomposer.org/] (recommended way): - - composer.phar update --dev - -Run test suite: - - php ./test/Stripe.php - diff --git a/externals/stripe-php/VERSION b/externals/stripe-php/VERSION deleted file mode 100644 --- a/externals/stripe-php/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.16.0 diff --git a/externals/stripe-php/composer.json b/externals/stripe-php/composer.json deleted file mode 100644 --- a/externals/stripe-php/composer.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "stripe/stripe-php", - "description": "Stripe PHP Library", - "keywords": [ - "stripe", - "payment processing", - "api" - ], - "homepage": "https://stripe.com/", - "license": "MIT", - "authors": [ - { - "name": "Stripe and contributors", - "homepage": "https://github.com/stripe/stripe-php/contributors" - } - ], - "require": { - "php": ">=5.2", - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*" - }, - "require-dev": { - "simpletest/simpletest": "*" - }, - "autoload": { - "classmap": ["lib/Stripe/"] - } -} diff --git a/externals/stripe-php/lib/Stripe.php b/externals/stripe-php/lib/Stripe.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe.php +++ /dev/null @@ -1,57 +0,0 @@ -_apiKey = $apiKey; - } - - /** - * @param string $url The path to the API endpoint. - * - * @returns string The full path. - */ - public static function apiUrl($url='') - { - $apiBase = Stripe::$apiBase; - return "$apiBase$url"; - } - - /** - * @param string|mixed $value A string to UTF8-encode. - * - * @returns string|mixed The UTF8-encoded string, or the object passed in if - * it wasn't a string. - */ - public static function utf8($value) - { - if (is_string($value) - && mb_detect_encoding($value, "UTF-8", TRUE) != "UTF-8") { - return utf8_encode($value); - } else { - return $value; - } - } - - private static function _encodeObjects($d) - { - if ($d instanceof Stripe_ApiResource) { - return self::utf8($d->id); - } else if ($d === true) { - return 'true'; - } else if ($d === false) { - return 'false'; - } else if (is_array($d)) { - $res = array(); - foreach ($d as $k => $v) - $res[$k] = self::_encodeObjects($v); - return $res; - } else { - return self::utf8($d); - } - } - - /** - * @param array $arr An map of param keys to values. - * @param string|null $prefix (It doesn't look like we ever use $prefix...) - * - * @returns string A querystring, essentially. - */ - public static function encode($arr, $prefix=null) - { - if (!is_array($arr)) - return $arr; - - $r = array(); - foreach ($arr as $k => $v) { - if (is_null($v)) - continue; - - if ($prefix && $k && !is_int($k)) - $k = $prefix."[".$k."]"; - else if ($prefix) - $k = $prefix."[]"; - - if (is_array($v)) { - $r[] = self::encode($v, $k, true); - } else { - $r[] = urlencode($k)."=".urlencode($v); - } - } - - return implode("&", $r); - } - - /** - * @param string $method - * @param string $url - * @param array|null $params - * - * @return array An array whose first element is the response and second - * element is the API key used to make the request. - */ - public function request($method, $url, $params=null) - { - if (!$params) - $params = array(); - list($rbody, $rcode, $myApiKey) = - $this->_requestRaw($method, $url, $params); - $resp = $this->_interpretResponse($rbody, $rcode); - return array($resp, $myApiKey); - } - - - /** - * @param string $rbody A JSON string. - * @param int $rcode - * @param array $resp - * - * @throws Stripe_InvalidRequestError if the error is caused by the user. - * @throws Stripe_AuthenticationError if the error is caused by a lack of - * permissions. - * @throws Stripe_CardError if the error is the error code is 402 (payment - * required) - * @throws Stripe_ApiError otherwise. - */ - public function handleApiError($rbody, $rcode, $resp) - { - if (!is_array($resp) || !isset($resp['error'])) { - $msg = "Invalid response object from API: $rbody " - ."(HTTP response code was $rcode)"; - throw new Stripe_ApiError($msg, $rcode, $rbody, $resp); - } - - $error = $resp['error']; - $msg = isset($error['message']) ? $error['message'] : null; - $param = isset($error['param']) ? $error['param'] : null; - $code = isset($error['code']) ? $error['code'] : null; - - switch ($rcode) { - case 400: - if ($code == 'rate_limit') { - throw new Stripe_RateLimitError( - $msg, $param, $rcode, $rbody, $resp - ); - } - case 404: - throw new Stripe_InvalidRequestError( - $msg, $param, $rcode, $rbody, $resp - ); - case 401: - throw new Stripe_AuthenticationError($msg, $rcode, $rbody, $resp); - case 402: - throw new Stripe_CardError($msg, $param, $code, $rcode, $rbody, $resp); - default: - throw new Stripe_ApiError($msg, $rcode, $rbody, $resp); - } - } - - private function _requestRaw($method, $url, $params) - { - $myApiKey = $this->_apiKey; - if (!$myApiKey) - $myApiKey = Stripe::$apiKey; - - if (!$myApiKey) { - $msg = 'No API key provided. (HINT: set your API key using ' - . '"Stripe::setApiKey()". You can generate API keys from ' - . 'the Stripe web interface. See https://stripe.com/api for ' - . 'details, or email support@stripe.com if you have any questions.'; - throw new Stripe_AuthenticationError($msg); - } - - $absUrl = $this->apiUrl($url); - $params = self::_encodeObjects($params); - $langVersion = phpversion(); - $uname = php_uname(); - $ua = array('bindings_version' => Stripe::VERSION, - 'lang' => 'php', - 'lang_version' => $langVersion, - 'publisher' => 'stripe', - 'uname' => $uname); - $headers = array('X-Stripe-Client-User-Agent: ' . json_encode($ua), - 'User-Agent: Stripe/v1 PhpBindings/' . Stripe::VERSION, - 'Authorization: Bearer ' . $myApiKey); - if (Stripe::$apiVersion) - $headers[] = 'Stripe-Version: ' . Stripe::$apiVersion; - list($rbody, $rcode) = $this->_curlRequest( - $method, - $absUrl, - $headers, - $params - ); - return array($rbody, $rcode, $myApiKey); - } - - private function _interpretResponse($rbody, $rcode) - { - try { - $resp = json_decode($rbody, true); - } catch (Exception $e) { - $msg = "Invalid response body from API: $rbody " - . "(HTTP response code was $rcode)"; - throw new Stripe_ApiError($msg, $rcode, $rbody); - } - - if ($rcode < 200 || $rcode >= 300) { - $this->handleApiError($rbody, $rcode, $resp); - } - return $resp; - } - - private function _curlRequest($method, $absUrl, $headers, $params) - { - - if (!self::$_preFlight) { - self::$_preFlight = $this->checkSslCert($this->apiUrl()); - } - - $curl = curl_init(); - $method = strtolower($method); - $opts = array(); - if ($method == 'get') { - $opts[CURLOPT_HTTPGET] = 1; - if (count($params) > 0) { - $encoded = self::encode($params); - $absUrl = "$absUrl?$encoded"; - } - } else if ($method == 'post') { - $opts[CURLOPT_POST] = 1; - $opts[CURLOPT_POSTFIELDS] = self::encode($params); - } else if ($method == 'delete') { - $opts[CURLOPT_CUSTOMREQUEST] = 'DELETE'; - if (count($params) > 0) { - $encoded = self::encode($params); - $absUrl = "$absUrl?$encoded"; - } - } else { - throw new Stripe_ApiError("Unrecognized method $method"); - } - - $absUrl = self::utf8($absUrl); - $opts[CURLOPT_URL] = $absUrl; - $opts[CURLOPT_RETURNTRANSFER] = true; - $opts[CURLOPT_CONNECTTIMEOUT] = 30; - $opts[CURLOPT_TIMEOUT] = 80; - $opts[CURLOPT_RETURNTRANSFER] = true; - $opts[CURLOPT_HTTPHEADER] = $headers; - if (!Stripe::$verifySslCerts) - $opts[CURLOPT_SSL_VERIFYPEER] = false; - - curl_setopt_array($curl, $opts); - $rbody = curl_exec($curl); - - if (!defined('CURLE_SSL_CACERT_BADFILE')) { - define('CURLE_SSL_CACERT_BADFILE', 77); // constant not defined in PHP - } - - $errno = curl_errno($curl); - if ($errno == CURLE_SSL_CACERT || - $errno == CURLE_SSL_PEER_CERTIFICATE || - $errno == CURLE_SSL_CACERT_BADFILE) { - array_push( - $headers, - 'X-Stripe-Client-Info: {"ca":"using Stripe-supplied CA bundle"}' - ); - $cert = $this->caBundle(); - curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); - curl_setopt($curl, CURLOPT_CAINFO, $cert); - $rbody = curl_exec($curl); - } - - if ($rbody === false) { - $errno = curl_errno($curl); - $message = curl_error($curl); - curl_close($curl); - $this->handleCurlError($errno, $message); - } - - $rcode = curl_getinfo($curl, CURLINFO_HTTP_CODE); - curl_close($curl); - return array($rbody, $rcode); - } - - /** - * @param number $errno - * @param string $message - * @throws Stripe_ApiConnectionError - */ - public function handleCurlError($errno, $message) - { - $apiBase = Stripe::$apiBase; - switch ($errno) { - case CURLE_COULDNT_CONNECT: - case CURLE_COULDNT_RESOLVE_HOST: - case CURLE_OPERATION_TIMEOUTED: - $msg = "Could not connect to Stripe ($apiBase). Please check your " - . "internet connection and try again. If this problem persists, " - . "you should check Stripe's service status at " - . "https://twitter.com/stripestatus, or"; - break; - case CURLE_SSL_CACERT: - case CURLE_SSL_PEER_CERTIFICATE: - $msg = "Could not verify Stripe's SSL certificate. Please make sure " - . "that your network is not intercepting certificates. " - . "(Try going to $apiBase in your browser.) " - . "If this problem persists,"; - break; - default: - $msg = "Unexpected error communicating with Stripe. " - . "If this problem persists,"; - } - $msg .= " let us know at support@stripe.com."; - - $msg .= "\n\n(Network error [errno $errno]: $message)"; - throw new Stripe_ApiConnectionError($msg); - } - - /** - * Preflight the SSL certificate presented by the backend. This isn't 100% - * bulletproof, in that we're not actually validating the transport used to - * communicate with Stripe, merely that the first attempt to does not use a - * revoked certificate. - * - * Unfortunately the interface to OpenSSL doesn't make it easy to check the - * certificate before sending potentially sensitive data on the wire. This - * approach raises the bar for an attacker significantly. - */ - private function checkSslCert($url) - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) { - error_log( - 'Warning: This version of PHP is too old to check SSL certificates '. - 'correctly. Stripe cannot guarantee that the server has a '. - 'certificate which is not blacklisted' - ); - return true; - } - - if (strpos(PHP_VERSION, 'hiphop') !== false) { - error_log( - 'Warning: HHVM does not support Stripe\'s SSL certificate '. - 'verification. (See http://docs.hhvm.com/manual/en/context.ssl.php) '. - 'Stripe cannot guarantee that the server has a certificate which is '. - 'not blacklisted' - ); - return true; - } - - $url = parse_url($url); - $port = isset($url["port"]) ? $url["port"] : 443; - $url = "ssl://{$url["host"]}:{$port}"; - - $sslContext = stream_context_create( - array('ssl' => array( - 'capture_peer_cert' => true, - 'verify_peer' => true, - 'cafile' => $this->caBundle(), - )) - ); - $result = stream_socket_client( - $url, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $sslContext - ); - if ($errno !== 0) { - $apiBase = Stripe::$apiBase; - throw new Stripe_ApiConnectionError( - 'Could not connect to Stripe (' . $apiBase . '). Please check your '. - 'internet connection and try again. If this problem persists, '. - 'you should check Stripe\'s service status at '. - 'https://twitter.com/stripestatus. Reason was: '.$errstr - ); - } - - $params = stream_context_get_params($result); - - $cert = $params['options']['ssl']['peer_certificate']; - - openssl_x509_export($cert, $pemCert); - - if (self::isBlackListed($pemCert)) { - throw new Stripe_ApiConnectionError( - 'Invalid server certificate. You tried to connect to a server that '. - 'has a revoked SSL certificate, which means we cannot securely send '. - 'data to that server. Please email support@stripe.com if you need '. - 'help connecting to the correct API server.' - ); - } - - return true; - } - - /* Checks if a valid PEM encoded certificate is blacklisted - * @return boolean - */ - public static function isBlackListed($certificate) - { - $certificate = trim($certificate); - $lines = explode("\n", $certificate); - - // Kludgily remove the PEM padding - array_shift($lines); array_pop($lines); - - $derCert = base64_decode(implode("", $lines)); - $fingerprint = sha1($derCert); - return in_array($fingerprint, self::blacklistedCerts()); - } - - private function caBundle() - { - return dirname(__FILE__) . '/../data/ca-certificates.crt'; - } -} diff --git a/externals/stripe-php/lib/Stripe/ApiResource.php b/externals/stripe-php/lib/Stripe/ApiResource.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/ApiResource.php +++ /dev/null @@ -1,144 +0,0 @@ -refresh(); - return $instance; - } - - /** - * @returns Stripe_ApiResource The refreshed resource. - */ - public function refresh() - { - $requestor = new Stripe_ApiRequestor($this->_apiKey); - $url = $this->instanceUrl(); - - list($response, $apiKey) = $requestor->request( - 'get', - $url, - $this->_retrieveOptions - ); - $this->refreshFrom($response, $apiKey); - return $this; - } - - /** - * @param string $class - * - * @returns string The name of the class, with namespacing and underscores - * stripped. - */ - public static function className($class) - { - // Useful for namespaces: Foo\Stripe_Charge - if ($postfixNamespaces = strrchr($class, '\\')) { - $class = substr($postfixNamespaces, 1); - } - // Useful for underscored 'namespaces': Foo_Stripe_Charge - if ($postfixFakeNamespaces = strrchr($class, 'Stripe_')) { - $class = $postfixFakeNamespaces; - } - if (substr($class, 0, strlen('Stripe')) == 'Stripe') { - $class = substr($class, strlen('Stripe')); - } - $class = str_replace('_', '', $class); - $name = urlencode($class); - $name = strtolower($name); - return $name; - } - - /** - * @param string $class - * - * @returns string The endpoint URL for the given class. - */ - public static function classUrl($class) - { - $base = self::_scopedLsb($class, 'className', $class); - return "/v1/${base}s"; - } - - /** - * @returns string The full API URL for this API resource. - */ - public function instanceUrl() - { - $id = $this['id']; - $class = get_class($this); - if ($id === null) { - $message = "Could not determine which URL to request: " - . "$class instance has invalid ID: $id"; - throw new Stripe_InvalidRequestError($message, null); - } - $id = Stripe_ApiRequestor::utf8($id); - $base = $this->_lsb('classUrl', $class); - $extn = urlencode($id); - return "$base/$extn"; - } - - private static function _validateCall($method, $params=null, $apiKey=null) - { - if ($params && !is_array($params)) { - $message = "You must pass an array as the first argument to Stripe API " - . "method calls. (HINT: an example call to create a charge " - . "would be: \"StripeCharge::create(array('amount' => 100, " - . "'currency' => 'usd', 'card' => array('number' => " - . "4242424242424242, 'exp_month' => 5, 'exp_year' => 2015)))\")"; - throw new Stripe_Error($message); - } - - if ($apiKey && !is_string($apiKey)) { - $message = 'The second argument to Stripe API method calls is an ' - . 'optional per-request apiKey, which must be a string. ' - . '(HINT: you can set a global apiKey by ' - . '"Stripe::setApiKey()")'; - throw new Stripe_Error($message); - } - } - - protected static function _scopedAll($class, $params=null, $apiKey=null) - { - self::_validateCall('all', $params, $apiKey); - $requestor = new Stripe_ApiRequestor($apiKey); - $url = self::_scopedLsb($class, 'classUrl', $class); - list($response, $apiKey) = $requestor->request('get', $url, $params); - return Stripe_Util::convertToStripeObject($response, $apiKey); - } - - protected static function _scopedCreate($class, $params=null, $apiKey=null) - { - self::_validateCall('create', $params, $apiKey); - $requestor = new Stripe_ApiRequestor($apiKey); - $url = self::_scopedLsb($class, 'classUrl', $class); - list($response, $apiKey) = $requestor->request('post', $url, $params); - return Stripe_Util::convertToStripeObject($response, $apiKey); - } - - protected function _scopedSave($class, $apiKey=null) - { - self::_validateCall('save'); - $requestor = new Stripe_ApiRequestor($apiKey); - $params = $this->serializeParameters(); - - if (count($params) > 0) { - $url = $this->instanceUrl(); - list($response, $apiKey) = $requestor->request('post', $url, $params); - $this->refreshFrom($response, $apiKey); - } - return $this; - } - - protected function _scopedDelete($class, $params=null) - { - self::_validateCall('delete'); - $requestor = new Stripe_ApiRequestor($this->_apiKey); - $url = $this->instanceUrl(); - list($response, $apiKey) = $requestor->request('delete', $url, $params); - $this->refreshFrom($response, $apiKey); - return $this; - } -} diff --git a/externals/stripe-php/lib/Stripe/ApplicationFee.php b/externals/stripe-php/lib/Stripe/ApplicationFee.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/ApplicationFee.php +++ /dev/null @@ -1,53 +0,0 @@ -_apiKey); - $url = $this->instanceUrl() . '/refund'; - list($response, $apiKey) = $requestor->request('post', $url, $params); - $this->refreshFrom($response, $apiKey); - return $this; - } -} diff --git a/externals/stripe-php/lib/Stripe/AttachedObject.php b/externals/stripe-php/lib/Stripe/AttachedObject.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/AttachedObject.php +++ /dev/null @@ -1,23 +0,0 @@ -_values), array_keys($properties)); - // Don't unset, but rather set to null so we send up '' for deletion. - foreach ($removed as $k) { - $this->$k = null; - } - - foreach ($properties as $k => $v) { - $this->$k = $v; - } - } -} diff --git a/externals/stripe-php/lib/Stripe/AuthenticationError.php b/externals/stripe-php/lib/Stripe/AuthenticationError.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/AuthenticationError.php +++ /dev/null @@ -1,5 +0,0 @@ -param = $param; - $this->code = $code; - } -} diff --git a/externals/stripe-php/lib/Stripe/Charge.php b/externals/stripe-php/lib/Stripe/Charge.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Charge.php +++ /dev/null @@ -1,103 +0,0 @@ -_apiKey); - $url = $this->instanceUrl() . '/refund'; - list($response, $apiKey) = $requestor->request('post', $url, $params); - $this->refreshFrom($response, $apiKey); - return $this; - } - - /** - * @param array|null $params - * - * @return Stripe_Charge The captured charge. - */ - public function capture($params=null) - { - $requestor = new Stripe_ApiRequestor($this->_apiKey); - $url = $this->instanceUrl() . '/capture'; - list($response, $apiKey) = $requestor->request('post', $url, $params); - $this->refreshFrom($response, $apiKey); - return $this; - } - - /** - * @param array|null $params - * - * @return array The updated dispute. - */ - public function updateDispute($params=null) - { - $requestor = new Stripe_ApiRequestor($this->_apiKey); - $url = $this->instanceUrl() . '/dispute'; - list($response, $apiKey) = $requestor->request('post', $url, $params); - $this->refreshFrom(array('dispute' => $response), $apiKey, true); - return $this->dispute; - } - - /** - * @return Stripe_Charge The updated charge. - */ - public function closeDispute() - { - $requestor = new Stripe_ApiRequestor($this->_apiKey); - $url = $this->instanceUrl() . '/dispute/close'; - list($response, $apiKey) = $requestor->request('post', $url); - $this->refreshFrom($response, $apiKey); - return $this; - } -} diff --git a/externals/stripe-php/lib/Stripe/Coupon.php b/externals/stripe-php/lib/Stripe/Coupon.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Coupon.php +++ /dev/null @@ -1,51 +0,0 @@ -id; - $ii = Stripe_InvoiceItem::create($params, $this->_apiKey); - return $ii; - } - - /** - * @param array|null $params - * - * @returns array An array of the customer's Stripe_Invoices. - */ - public function invoices($params=null) - { - if (!$params) - $params = array(); - $params['customer'] = $this->id; - $invoices = Stripe_Invoice::all($params, $this->_apiKey); - return $invoices; - } - - /** - * @param array|null $params - * - * @returns array An array of the customer's Stripe_InvoiceItems. - */ - public function invoiceItems($params=null) - { - if (!$params) - $params = array(); - $params['customer'] = $this->id; - $iis = Stripe_InvoiceItem::all($params, $this->_apiKey); - return $iis; - } - - /** - * @param array|null $params - * - * @returns array An array of the customer's Stripe_Charges. - */ - public function charges($params=null) - { - if (!$params) - $params = array(); - $params['customer'] = $this->id; - $charges = Stripe_Charge::all($params, $this->_apiKey); - return $charges; - } - - /** - * @param array|null $params - * - * @returns Stripe_Subscription The updated subscription. - */ - public function updateSubscription($params=null) - { - $requestor = new Stripe_ApiRequestor($this->_apiKey); - $url = $this->instanceUrl() . '/subscription'; - list($response, $apiKey) = $requestor->request('post', $url, $params); - $this->refreshFrom(array('subscription' => $response), $apiKey, true); - return $this->subscription; - } - - /** - * @param array|null $params - * - * @returns Stripe_Subscription The cancelled subscription. - */ - public function cancelSubscription($params=null) - { - $requestor = new Stripe_ApiRequestor($this->_apiKey); - $url = $this->instanceUrl() . '/subscription'; - list($response, $apiKey) = $requestor->request('delete', $url, $params); - $this->refreshFrom(array('subscription' => $response), $apiKey, true); - return $this->subscription; - } - - /** - * @param array|null $params - * - * @returns Stripe_Customer The updated customer. - */ - public function deleteDiscount() - { - $requestor = new Stripe_ApiRequestor($this->_apiKey); - $url = $this->instanceUrl() . '/discount'; - list($response, $apiKey) = $requestor->request('delete', $url); - $this->refreshFrom(array('discount' => null), $apiKey, true); - } -} diff --git a/externals/stripe-php/lib/Stripe/Error.php b/externals/stripe-php/lib/Stripe/Error.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Error.php +++ /dev/null @@ -1,29 +0,0 @@ -httpStatus = $httpStatus; - $this->httpBody = $httpBody; - $this->jsonBody = $jsonBody; - } - - public function getHttpStatus() - { - return $this->httpStatus; - } - - public function getHttpBody() - { - return $this->httpBody; - } - - public function getJsonBody() - { - return $this->jsonBody; - } -} diff --git a/externals/stripe-php/lib/Stripe/Event.php b/externals/stripe-php/lib/Stripe/Event.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Event.php +++ /dev/null @@ -1,28 +0,0 @@ -param = $param; - } -} diff --git a/externals/stripe-php/lib/Stripe/Invoice.php b/externals/stripe-php/lib/Stripe/Invoice.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Invoice.php +++ /dev/null @@ -1,75 +0,0 @@ -request('get', $url, $params); - return Stripe_Util::convertToStripeObject($response, $apiKey); - } - - /** - * @return Stripe_Invoice The saved invoice. - */ - public function save() - { - $class = get_class(); - return self::_scopedSave($class); - } - - /** - * @return Stripe_Invoice The paid invoice. - */ - public function pay() - { - $requestor = new Stripe_ApiRequestor($this->_apiKey); - $url = $this->instanceUrl() . '/pay'; - list($response, $apiKey) = $requestor->request('post', $url); - $this->refreshFrom($response, $apiKey); - return $this; - } -} diff --git a/externals/stripe-php/lib/Stripe/InvoiceItem.php b/externals/stripe-php/lib/Stripe/InvoiceItem.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/InvoiceItem.php +++ /dev/null @@ -1,58 +0,0 @@ -_apiKey); - list($response, $apiKey) = $requestor->request( - 'get', - $this['url'], - $params - ); - return Stripe_Util::convertToStripeObject($response, $apiKey); - } - - public function create($params=null) - { - $requestor = new Stripe_ApiRequestor($this->_apiKey); - list($response, $apiKey) = $requestor->request( - 'post', $this['url'], $params - ); - return Stripe_Util::convertToStripeObject($response, $apiKey); - } - - public function retrieve($id, $params=null) - { - $requestor = new Stripe_ApiRequestor($this->_apiKey); - $base = $this['url']; - $id = Stripe_ApiRequestor::utf8($id); - $extn = urlencode($id); - list($response, $apiKey) = $requestor->request( - 'get', "$base/$extn", $params - ); - return Stripe_Util::convertToStripeObject($response, $apiKey); - } - -} diff --git a/externals/stripe-php/lib/Stripe/Object.php b/externals/stripe-php/lib/Stripe/Object.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Object.php +++ /dev/null @@ -1,264 +0,0 @@ -_apiKey = $apiKey; - $this->_values = array(); - $this->_unsavedValues = new Stripe_Util_Set(); - $this->_transientValues = new Stripe_Util_Set(); - - $this->_retrieveOptions = array(); - if (is_array($id)) { - foreach ($id as $key => $value) { - if ($key != 'id') { - $this->_retrieveOptions[$key] = $value; - } - } - $id = $id['id']; - } - - if ($id !== null) { - $this->id = $id; - } - } - - // Standard accessor magic methods - public function __set($k, $v) - { - if ($v === "") { - throw new InvalidArgumentException( - 'You cannot set \''.$k.'\'to an empty string. ' - .'We interpret empty strings as NULL in requests. ' - .'You may set obj->'.$k.' = NULL to delete the property' - ); - } - - if (self::$nestedUpdatableAttributes->includes($k) - && isset($this->$k) && is_array($v)) { - $this->$k->replaceWith($v); - } else { - // TODO: may want to clear from $_transientValues (Won't be user-visible). - $this->_values[$k] = $v; - } - if (!self::$permanentAttributes->includes($k)) - $this->_unsavedValues->add($k); - } - public function __isset($k) - { - return isset($this->_values[$k]); - } - public function __unset($k) - { - unset($this->_values[$k]); - $this->_transientValues->add($k); - $this->_unsavedValues->discard($k); - } - public function __get($k) - { - if (array_key_exists($k, $this->_values)) { - return $this->_values[$k]; - } else if ($this->_transientValues->includes($k)) { - $class = get_class($this); - $attrs = join(', ', array_keys($this->_values)); - $message = "Stripe Notice: Undefined property of $class instance: $k. " - . "HINT: The $k attribute was set in the past, however. " - . "It was then wiped when refreshing the object " - . "with the result returned by Stripe's API, " - . "probably as a result of a save(). The attributes currently " - . "available on this object are: $attrs"; - error_log($message); - return null; - } else { - $class = get_class($this); - error_log("Stripe Notice: Undefined property of $class instance: $k"); - return null; - } - } - - // ArrayAccess methods - public function offsetSet($k, $v) - { - $this->$k = $v; - } - - public function offsetExists($k) - { - return array_key_exists($k, $this->_values); - } - - public function offsetUnset($k) - { - unset($this->$k); - } - public function offsetGet($k) - { - return array_key_exists($k, $this->_values) ? $this->_values[$k] : null; - } - - public function keys() - { - return array_keys($this->_values); - } - - /** - * This unfortunately needs to be public to be used in Util.php - * - * @param string $class - * @param array $values - * @param string|null $apiKey - * - * @return Stripe_Object The object constructed from the given values. - */ - public static function scopedConstructFrom($class, $values, $apiKey=null) - { - $obj = new $class(isset($values['id']) ? $values['id'] : null, $apiKey); - $obj->refreshFrom($values, $apiKey); - return $obj; - } - - /** - * @param array $values - * @param string|null $apiKey - * - * @return Stripe_Object The object of the same class as $this constructed - * from the given values. - */ - public static function constructFrom($values, $apiKey=null) - { - return self::scopedConstructFrom(__CLASS__, $values, $apiKey); - } - - /** - * Refreshes this object using the provided values. - * - * @param array $values - * @param string $apiKey - * @param boolean $partial Defaults to false. - */ - public function refreshFrom($values, $apiKey, $partial=false) - { - $this->_apiKey = $apiKey; - - // Wipe old state before setting new. This is useful for e.g. updating a - // customer, where there is no persistent card parameter. Mark those values - // which don't persist as transient - if ($partial) { - $removed = new Stripe_Util_Set(); - } else { - $removed = array_diff(array_keys($this->_values), array_keys($values)); - } - - foreach ($removed as $k) { - if (self::$permanentAttributes->includes($k)) - continue; - unset($this->$k); - } - - foreach ($values as $k => $v) { - if (self::$permanentAttributes->includes($k) && isset($this[$k])) - continue; - - if (self::$nestedUpdatableAttributes->includes($k) && is_array($v)) { - $this->_values[$k] = Stripe_Object::scopedConstructFrom( - 'Stripe_AttachedObject', $v, $apiKey - ); - } else { - $this->_values[$k] = Stripe_Util::convertToStripeObject($v, $apiKey); - } - - $this->_transientValues->discard($k); - $this->_unsavedValues->discard($k); - } - } - - /** - * @return array A recursive mapping of attributes to values for this object, - * including the proper value for deleted attributes. - */ - public function serializeParameters() - { - $params = array(); - if ($this->_unsavedValues) { - foreach ($this->_unsavedValues->toArray() as $k) { - $v = $this->$k; - if ($v === NULL) { - $v = ''; - } - $params[$k] = $v; - } - } - - // Get nested updates. - foreach (self::$nestedUpdatableAttributes->toArray() as $property) { - if (isset($this->$property) - && $this->$property instanceOf Stripe_Object) { - $params[$property] = $this->$property->serializeParameters(); - } - } - return $params; - } - - // Pretend to have late static bindings, even in PHP 5.2 - protected function _lsb($method) - { - $class = get_class($this); - $args = array_slice(func_get_args(), 1); - return call_user_func_array(array($class, $method), $args); - } - protected static function _scopedLsb($class, $method) - { - $args = array_slice(func_get_args(), 2); - return call_user_func_array(array($class, $method), $args); - } - - public function __toJSON() - { - if (defined('JSON_PRETTY_PRINT')) { - return json_encode($this->__toArray(true), JSON_PRETTY_PRINT); - } else { - return json_encode($this->__toArray(true)); - } - } - - public function __toString() - { - return $this->__toJSON(); - } - - public function __toArray($recursive=false) - { - if ($recursive) { - return Stripe_Util::convertStripeObjectToArray($this->_values); - } else { - return $this->_values; - } - } -} - - -Stripe_Object::init(); diff --git a/externals/stripe-php/lib/Stripe/Plan.php b/externals/stripe-php/lib/Stripe/Plan.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Plan.php +++ /dev/null @@ -1,60 +0,0 @@ -id; - $transfers = Stripe_Transfer::all($params, $this->_apiKey); - return $transfers; - } -} diff --git a/externals/stripe-php/lib/Stripe/Refund.php b/externals/stripe-php/lib/Stripe/Refund.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Refund.php +++ /dev/null @@ -1,36 +0,0 @@ -refresh(); - return $instance; - } - - /** - * @param Stripe_SingletonApiResource $class - * @return string The endpoint associated with this singleton class. - */ - public static function classUrl($class) - { - $base = self::className($class); - return "/v1/${base}"; - } - - /** - * @return string The endpoint associated with this singleton API resource. - */ - public function instanceUrl() - { - $class = get_class($this); - $base = self::classUrl($class); - return "$base"; - } -} diff --git a/externals/stripe-php/lib/Stripe/Stripe.php b/externals/stripe-php/lib/Stripe/Stripe.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Stripe.php +++ /dev/null @@ -1,73 +0,0 @@ -_apiKey); - $url = $this->instanceUrl() . '/discount'; - list($response, $apiKey) = $requestor->request('delete', $url); - $this->refreshFrom(array('discount' => null), $apiKey, true); - } -} diff --git a/externals/stripe-php/lib/Stripe/Token.php b/externals/stripe-php/lib/Stripe/Token.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Token.php +++ /dev/null @@ -1,28 +0,0 @@ -_apiKey); - $url = $this->instanceUrl() . '/cancel'; - list($response, $apiKey) = $requestor->request('post', $url); - $this->refreshFrom($response, $apiKey); - return $this; - } - - /** - * @return Stripe_Transfer The saved transfer. - */ - public function save() - { - $class = get_class(); - return self::_scopedSave($class); - } - -} diff --git a/externals/stripe-php/lib/Stripe/Util.php b/externals/stripe-php/lib/Stripe/Util.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Util.php +++ /dev/null @@ -1,90 +0,0 @@ - $v) { - // FIXME: this is an encapsulation violation - if ($k[0] == '_') { - continue; - } - if ($v instanceof Stripe_Object) { - $results[$k] = $v->__toArray(true); - } else if (is_array($v)) { - $results[$k] = self::convertStripeObjectToArray($v); - } else { - $results[$k] = $v; - } - } - return $results; - } - - /** - * Converts a response from the Stripe API to the corresponding PHP object. - * - * @param array $resp The response from the Stripe API. - * @param string $apiKey - * @return Stripe_Object|array - */ - public static function convertToStripeObject($resp, $apiKey) - { - $types = array( - 'card' => 'Stripe_Card', - 'charge' => 'Stripe_Charge', - 'customer' => 'Stripe_Customer', - 'list' => 'Stripe_List', - 'invoice' => 'Stripe_Invoice', - 'invoiceitem' => 'Stripe_InvoiceItem', - 'event' => 'Stripe_Event', - 'transfer' => 'Stripe_Transfer', - 'plan' => 'Stripe_Plan', - 'recipient' => 'Stripe_Recipient', - 'refund' => 'Stripe_Refund', - 'subscription' => 'Stripe_Subscription' - ); - if (self::isList($resp)) { - $mapped = array(); - foreach ($resp as $i) - array_push($mapped, self::convertToStripeObject($i, $apiKey)); - return $mapped; - } else if (is_array($resp)) { - if (isset($resp['object']) - && is_string($resp['object']) - && isset($types[$resp['object']])) { - $class = $types[$resp['object']]; - } else { - $class = 'Stripe_Object'; - } - return Stripe_Object::scopedConstructFrom($class, $resp, $apiKey); - } else { - return $resp; - } - } -} diff --git a/externals/stripe-php/lib/Stripe/Util/Set.php b/externals/stripe-php/lib/Stripe/Util/Set.php deleted file mode 100644 --- a/externals/stripe-php/lib/Stripe/Util/Set.php +++ /dev/null @@ -1,34 +0,0 @@ -_elts = array(); - foreach ($members as $item) - $this->_elts[$item] = true; - } - - public function includes($elt) - { - return isset($this->_elts[$elt]); - } - - public function add($elt) - { - $this->_elts[$elt] = true; - } - - public function discard($elt) - { - unset($this->_elts[$elt]); - } - - // TODO: make Set support foreach - public function toArray() - { - return array_keys($this->_elts); - } -} diff --git a/externals/stripe-php/lib/data/ca-certificates.crt b/externals/stripe-php/lib/data/ca-certificates.crt deleted file mode 100644 --- a/externals/stripe-php/lib/data/ca-certificates.crt +++ /dev/null @@ -1,5165 +0,0 @@ -# Generated by https://gist.github.com/ab/9756531 on 2014-03-25 -# from Ubuntu ca-certificates 20130906. -# See http://www.ubuntu.com/usn/usn-2154-1/ for version info. - -================================================================ -C: AT -O: A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH -OU: A-Trust-nQual-03 -CN: A-Trust-nQual-03 ------BEGIN CERTIFICATE----- -MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R -dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTA1MDgxNzIyMDAw -MFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy -dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 -ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM -EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj -lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ -znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH -2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1 -k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs -2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD -VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAVdRU0VlIXLOThaq/Yy/kgM40ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fG -KOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmrsQd7TZjTXLDR8KdCoLXEjq/+ -8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZdJXDRZslo+S4R -FGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS -mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmE -DNuxUCAKGkq6ahq97BvIxYSazQ== ------END CERTIFICATE----- - -================================================================ -C: BE -O: GlobalSign nv-sa -OU: Root CA -CN: GlobalSign Root CA ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- - -================================================================ -C: BM -O: QuoVadis Limited -CN: QuoVadis Root CA 2 ------BEGIN CERTIFICATE----- -MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa -GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg -Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J -WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB -rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp -+ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 -ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i -Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz -PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og -/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH -oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI -yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud -EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 -A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL -MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT -ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f -BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn -g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl -fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K -WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha -B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc -hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR -TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD -mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z -ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y -4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza -8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u ------END CERTIFICATE----- - -================================================================ -C: BM -O: QuoVadis Limited -CN: QuoVadis Root CA 3 ------BEGIN CERTIFICATE----- -MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM -V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB -4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr -H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd -8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv -vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT -mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe -btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc -T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt -WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ -c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A -4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD -VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG -CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 -aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 -aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu -dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw -czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G -A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC -TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg -Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 -7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem -d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd -+LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B -4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN -t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x -DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 -k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s -zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j -Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT -mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK -4SVhM7JZG+Ju1zdXtg2pEto= ------END CERTIFICATE----- - -================================================================ -C: BM -O: QuoVadis Limited -OU: Root Certification Authority -CN: QuoVadis Root Certification Authority ------BEGIN CERTIFICATE----- -MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC -TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz -MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw -IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR -dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp -li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D -rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ -WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug -F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU -xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC -Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv -dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw -ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl -IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh -c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy -ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh -Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI -KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T -KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq -y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p -dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD -VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL -MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk -fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8 -7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R -cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y -mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW -xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK -SnQ2+Q== ------END CERTIFICATE----- - -================================================================ -C: CH -O: SwissSign AG -CN: SwissSign Gold CA - G2 ------BEGIN CERTIFICATE----- -MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV -BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln -biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF -MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT -d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC -CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8 -76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+ -bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c -6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE -emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd -MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt -MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y -MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y -FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi -aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM -gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB -qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7 -lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn -8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov -L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6 -45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO -UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5 -O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC -bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv -GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a -77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC -hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3 -92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp -Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w -ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt -Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ ------END CERTIFICATE----- - -================================================================ -C: CH -O: SwissSign AG -CN: SwissSign Platinum CA - G2 ------BEGIN CERTIFICATE----- -MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE -BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWdu -IFBsYXRpbnVtIENBIC0gRzIwHhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAw -WjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMSMwIQYDVQQD -ExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu669y -IIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2Htn -IuJpX+UFeNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+ -6ixuEFGSzH7VozPY1kneWCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5ob -jM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIoj5+saCB9bzuohTEJfwvH6GXp43gOCWcw -izSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/68++QHkwFix7qepF6w9fl -+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34TaNhxKFrY -zt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaP -pZjydomyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtF -KwH3HBqi7Ri6Cr2D+m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuW -ae5ogObnmLo2t/5u7Su9IPhlGdpVCX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMB -AAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCvzAeHFUdvOMW0 -ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW -IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUA -A4ICAQAIhab1Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0 -uMoI3LQwnkAHFmtllXcBrqS3NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+ -FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4U99REJNi54Av4tHgvI42Rncz7Lj7 -jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8KV2LwUvJ4ooTHbG/ -u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl9x8D -YSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1 -puEa+S1BaYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXa -icYwu+uPyyIIoK6q8QNsOktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbG -DI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSYMdp08YSTcU1f+2BY0fvEwW2JorsgH51x -kcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAciIfNAChs0B0QTwoRqjt8Z -Wr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== ------END CERTIFICATE----- - -================================================================ -C: CH -O: SwissSign AG -CN: SwissSign Silver CA - G2 ------BEGIN CERTIFICATE----- -MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UE -BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWdu -IFNpbHZlciBDQSAtIEcyMB4XDTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0Nlow -RzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMY -U3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644N0Mv -Fz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7br -YT7QbNHm+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieF -nbAVlDLaYQ1HTWBCrpJH6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH -6ATK72oxh9TAtvmUcXtnZLi2kUpCe2UuMGoM9ZDulebyzYLs2aFK7PayS+VFheZt -eJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5hqAaEuSh6XzjZG6k4sIN/ -c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5FZGkECwJ -MoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRH -HTBsROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTf -jNFusB3hB48IHpmccelM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb6 -5i/4z3GcRm25xBWNOHkDRUjvxF3XCO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOB -rDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU -F6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRBtjpbO8tFnb0c -wpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 -cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIB -AHPGgeAn0i0P4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShp -WJHckRE1qTodvBqlYJ7YH39FkWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9 -xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L3XWgwF15kIwb4FDm3jH+mHtwX6WQ -2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx/uNncqCxv1yL5PqZ -IseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFaDGi8 -aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2X -em1ZqSqPe97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQR -dAtq/gsD/KNVV4n+SsuuWxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/ -OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJDIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+ -hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ubDgEj8Z+7fNzcbBGXJbLy -tGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u ------END CERTIFICATE----- - -================================================================ -C: CH -O: WISeKey -OU: Copyright (c) 2005 -OU: OISTE Foundation Endorsed -CN: OISTE WISeKey Global Root GA CA ------BEGIN CERTIFICATE----- -MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCB -ijELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHly -aWdodCAoYykgMjAwNTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl -ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQSBDQTAeFw0w -NTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYDVQQGEwJDSDEQMA4G -A1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIwIAYD -VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBX -SVNlS2V5IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAy0+zAJs9Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxR -VVuuk+g3/ytr6dTqvirdqFEr12bDYVxgAsj1znJ7O7jyTmUIms2kahnBAbtzptf2 -w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbDd50kc3vkDIzh2TbhmYsF -mQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ/yxViJGg -4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t9 -4B3RLoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQw -EAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOx -SPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vImMMkQyh2I+3QZH4VFvbBsUfk2 -ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4+vg1YFkCExh8 -vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa -hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZi -Fj4A4xylNoEYokxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ -/L7fCg0= ------END CERTIFICATE----- - -================================================================ -C: CN -O: CNNIC -CN: CNNIC ROOT ------BEGIN CERTIFICATE----- -MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJD -TjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2 -MDcwOTE0WhcNMjcwNDE2MDcwOTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMF -Q05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzDo+/hn7E7SIX1mlwh -IhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tizVHa6 -dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZO -V/kbZKKTVrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrC -GHn2emU1z5DrvTOTn1OrczvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gN -v7Sg2Ca+I19zN38m5pIEo3/PIKe38zrKy5nLAgMBAAGjczBxMBEGCWCGSAGG+EIB -AQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscCwQ7vptU7ETAPBgNVHRMB -Af8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991SlgrHAsEO -76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnK -OOK5Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvH -ugDnuL8BV8F3RTIMO/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7Hgvi -yJA/qIYM/PmLXoXLT1tLYhFHxUV8BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fL -buXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2G8kS1sHNzYDzAgE8yGnLRUhj -2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5mmxE= ------END CERTIFICATE----- - -================================================================ -C: CN -O: China Internet Network Information Center -CN: China Internet Network Information Center EV Certificates Root ------BEGIN CERTIFICATE----- -MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMC -Q04xMjAwBgNVBAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24g -Q2VudGVyMUcwRQYDVQQDDD5DaGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0 -aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMgUm9vdDAeFw0xMDA4MzEwNzExMjVa -Fw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAGA1UECgwpQ2hpbmEg -SW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMMPkNo -aW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRp -ZmljYXRlcyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z -7r07eKpkQ0H1UN+U8i6yjUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA// -DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV98YPjUesWgbdYavi7NifFy2cyjw1l1Vx -zUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2HklY0bBoQCxfVWhyXWIQ8 -hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23KzhmBsUs -4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54u -gQEC7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oY -NJKiyoOCWTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E -FgQUfHJLOcfA22KlT5uqGDSSosqDglkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3 -j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd50XPFtQO3WKwMVC/GVhMPMdoG -52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM7+czV0I664zB -echNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws -ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrI -zo9uoV1/A3U05K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATy -wy39FCqQmbkHzJ8= ------END CERTIFICATE----- - -================================================================ -C: CO -O: Sociedad Cameral de Certificación Digital - Certicámara S.A. -CN: AC Raíz Certicámara S.A. ------BEGIN CERTIFICATE----- -MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsx -CzAJBgNVBAYTAkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRp -ZmljYWNpw7NuIERpZ2l0YWwgLSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwa -QUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4wHhcNMDYxMTI3MjA0NjI5WhcNMzAw -NDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+U29jaWVkYWQgQ2Ft -ZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJhIFMu -QS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkq -hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeG -qentLhM0R7LQcNzJPNCNyu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzL -fDe3fezTf3MZsGqy2IiKLUV0qPezuMDU2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQ -Y5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU34ojC2I+GdV75LaeHM/J4 -Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP2yYe68yQ -54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+b -MMCm8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48j -ilSH5L887uvDdUhfHjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++Ej -YfDIJss2yKHzMI+ko6Kh3VOz3vCaMh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/zt -A/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK5lw1omdMEWux+IBkAC1vImHF -rEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1bczwmPS9KvqfJ -pxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE -AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCB -lTCBkgYEVR0gADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFy -YS5jb20vZHBjLzBaBggrBgEFBQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW50 -7WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2UgcHVlZGVuIGVuY29udHJhciBlbiBs -YSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEfAygPU3zmpFmps4p6 -xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuXEpBc -unvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/ -Jre7Ir5v/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dp -ezy4ydV/NgIlqmjCMRW3MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42 -gzmRkBDI8ck1fj+404HGIGQatlDCIaR43NAvO2STdPCWkPHv+wlaNECW8DYSwaN0 -jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wkeZBWN7PGKX6jD/EpOe9+ -XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f/RWmnkJD -W2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/ -RL5hRqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35r -MDOhYil/SrnhLecUIw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxk -BYn8eNZcLCZDqQ== ------END CERTIFICATE----- - -================================================================ -C: DE -O: D-Trust GmbH -CN: D-TRUST Root Class 3 CA 2 2009 ------BEGIN CERTIFICATE----- -MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF -MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD -bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha -ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM -HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 -UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 -tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R -ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM -lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp -/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G -A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G -A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj -dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy -MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl -cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js -L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL -BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni -acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 -o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K -zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 -PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y -Johw1+qRzT65ysCQblrGXnRl11z+o+I= ------END CERTIFICATE----- - -================================================================ -C: DE -O: D-Trust GmbH -CN: D-TRUST Root Class 3 CA 2 EV 2009 ------BEGIN CERTIFICATE----- -MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF -MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD -bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw -NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV -BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn -ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 -3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z -qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR -p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 -HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw -ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea -HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw -Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh -c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E -RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt -dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku -Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp -3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 -nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF -CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na -xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX -KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 ------END CERTIFICATE----- - -================================================================ -C: DE -O: Deutsche Telekom AG -OU: T-TeleSec Trust Center -CN: Deutsche Telekom Root CA 2 ------BEGIN CERTIFICATE----- -MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc -MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj -IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB -IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE -RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl -U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290 -IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU -ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC -QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr -rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S -NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc -QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH -txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP -BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp -tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa -IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl -6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+ -xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU -Cm26OWMohpLzGITY+9HPBVZkVw== ------END CERTIFICATE----- - -================================================================ -C: DE -O: T-Systems Enterprise Services GmbH -OU: T-Systems Trust Center -CN: T-TeleSec GlobalRoot Class 3 ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN -8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ -RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 -hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 -ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM -EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 -A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy -WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ -1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 -6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT -91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml -e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p -TpPDpFQUWw== ------END CERTIFICATE----- - -================================================================ -C: DE -O: TC TrustCenter GmbH -OU: TC TrustCenter Class 2 CA -CN: TC TrustCenter Class 2 CA II ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf -tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg -uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J -XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK -8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 -5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 -kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy -dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 -Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz -JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 -Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u -TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS -GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt -ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 -au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV -hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI -dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== ------END CERTIFICATE----- - -================================================================ -C: DE -O: TC TrustCenter GmbH -OU: TC TrustCenter Class 3 CA -CN: TC TrustCenter Class 3 CA II ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYwMTEyMTQ0MTU3WhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJW -Ht4bNwcwIi9v8Qbxq63WyKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+Q -Vl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo6SI7dYnWRBpl8huXJh0obazovVkdKyT2 -1oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZuV3bOx4a+9P/FRQI2Alq -ukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk2ZyqBwi1 -Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NX -XAek0CSnwPIA1DCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy -dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6 -Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz -JTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 -Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u -TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlN -irTzwppVMXzEO2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8 -TtXqluJucsG7Kv5sbviRmEb8yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6 -g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9IJqDnxrcOfHFcqMRA/07QlIp2+gB -95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal092Y+tTmBvTwtiBj -S+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc5A== ------END CERTIFICATE----- - -================================================================ -C: DE -O: TC TrustCenter GmbH -OU: TC TrustCenter Universal CA -CN: TC TrustCenter Universal CA I ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV -BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 -c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx -MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg -R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD -VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR -JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T -fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu -jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z -wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ -fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD -VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G -CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 -7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn -8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs -ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT -ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ -2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY ------END CERTIFICATE----- - -================================================================ -C: DE -ST: Baden-Wuerttemberg (BW) -L: Stuttgart -O: Deutscher Sparkassen Verlag GmbH -CN: S-TRUST Authentication and Encryption Root CA 2005:PN ------BEGIN CERTIFICATE----- -MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCB -rjELMAkGA1UEBhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcp -MRIwEAYDVQQHEwlTdHV0dGdhcnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fz -c2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVTLVRSVVNUIEF1dGhlbnRpY2F0aW9u -IGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0wNTA2MjIwMDAwMDBa -Fw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFkZW4t -V3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMg -RGV1dHNjaGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJV -U1QgQXV0aGVudGljYXRpb24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBO -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1 -toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob4QSwI7+Vio5bG0F/WsPo -TUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXLg3KSwlOy -ggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1 -XgqfeN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteF -hy+S8dF2g08LOlk3KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm -7QIDAQABo4GSMIGPMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEG -MCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJvbmxpbmUxLTIwNDgtNTAdBgNV -HQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAUD8oeXHngovMp -ttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD -pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFo -LtU96G7m1R08P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersF -iXOMy6ZNwPv2AtawB6MDwidAnwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0y -h9WUUpY6RsZxlj33mA6ykaqP2vROJAA5VeitF7nTNCtKqUDMFypVZUF0Qn71wK/I -k63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8bHz2eBIPdltkdOpQ= ------END CERTIFICATE----- - -================================================================ -C: DK -O: TDC -CN: TDC OCES CA ------BEGIN CERTIFICATE----- -MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJE -SzEMMAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEw -ODM5MzBaFw0zNzAyMTEwOTA5MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNU -REMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuHnEz9pPPEXyG9VhDr -2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0zY0s -2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItU -GBxIYXvViGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKj -dGqPqcNiKXEx5TukYBdedObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+r -TpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/ -BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB5DCB4TCB3gYIKoFQgSkB -AQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5kay9yZXBv -c2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRl -ciBmcmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEu -MS4xLiBDZXJ0aWZpY2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIg -T0lEIDEuMi4yMDguMTY5LjEuMS4xLjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1Ud -HwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEMMAoGA1UEChMDVERDMRQwEgYD -VQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYmaHR0cDovL2Ny -bC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy -MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZ -J2cdUBVLc647+RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqG -SIb2fQdBAAQQMA4bCFY2LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACrom -JkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4A9G28kNBKWKnctj7fAXmMXAnVBhO -inxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYscA+UYyAFMP8uXBV2Y -caaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9AOoB -mbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQ -YqbsFbS1AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9 -BKNDLdr8C2LqL19iUw== ------END CERTIFICATE----- - -================================================================ -C: DK -O: TDC Internet -OU: TDC Internet Root CA ------BEGIN CERTIFICATE----- -MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJE -SzEVMBMGA1UEChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQg -Um9vdCBDQTAeFw0wMTA0MDUxNjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNV -BAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJuZXQxHTAbBgNVBAsTFFREQyBJbnRl -cm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxLhA -vJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20jxsNu -Zp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a -0vnRrEvLznWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc1 -4izbSysseLlJ28TQx5yc5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGN -eGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcD -R0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZIAYb4QgEBBAQDAgAHMGUG -A1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMMVERDIElu -dGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxME -Q1JMMTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3 -WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAw -HQYDVR0OBBYEFGxkAcf9hW2syNqeUAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJ -KoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4IBAQBO -Q8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540mgwV5dOy0uaOX -wTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ -2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm89 -9qNLPg7kbWzbO0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0 -jUNAE4z9mQNUecYu6oah9jrUCbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38 -aQNiuJkFBT1reBK9sG9l ------END CERTIFICATE----- - -================================================================ -C: EE -O: AS Sertifitseerimiskeskus -CN: EE Certification Centre Root CA -emailAddress: pki@sk.ee ------BEGIN CERTIFICATE----- -MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1 -MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1 -czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG -CSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIwMTAxMDMwMTAxMDMwWhgPMjAzMDEy -MTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNl -ZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBS -b290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUy -euuOF0+W2Ap7kaJjbMeMTC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvO -bntl8jixwKIy72KyaOBhU8E2lf/slLo2rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIw -WFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw93X2PaRka9ZP585ArQ/d -MtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtNP2MbRMNE -1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/ -zQas8fElyalL1BSZMEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYB -BQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEF -BQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+RjxY6hUFaTlrg4wCQiZrxTFGGV -v9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqMlIpPnTX/dqQG -E5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u -uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIW -iAYLtqZLICjU3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/v -GVCJYMzpJJUPwssd8m92kMfMdcGWxZ0= ------END CERTIFICATE----- - -================================================================ -C: ES -CN: Autoridad de Certificacion Firmaprofesional CIF A62634068 ------BEGIN CERTIFICATE----- -MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE -BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h -cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy -MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg -Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 -thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM -cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG -L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i -NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h -X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b -m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy -Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja -EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T -KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF -6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh -OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD -VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD -VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp -cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv -ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl -AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF -661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9 -am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1 -ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481 -PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS -3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k -SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF -3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM -ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g -StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz -Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB -jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V ------END CERTIFICATE----- - -================================================================ -C: ES -L: C/ Muntaner 244 Barcelona -CN: Autoridad de Certificacion Firmaprofesional CIF A62634068 -emailAddress: ca@firmaprofesional.com ------BEGIN CERTIFICATE----- -MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMx -IjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1 -dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 -MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20w -HhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTELMAkGA1UEBhMCRVMx -IjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1 -dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 -MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20w -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5u -Cp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5Vj1H5WuretXDE7aTt/6MNbg9kUDGvASdY -rv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJHlShbz++AbOCQl4oBPB3z -hxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf3H5idPay -BQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcL -iam8NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcb -AgMBAAGjgZ8wgZwwKgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lv -bmFsLmNvbTASBgNVHRMBAf8ECDAGAQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0 -MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E -FgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQADggEBAEdz/o0n -VPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq -u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36m -hoEyIwOdyPdfwUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzfl -ZKG+TQyTmAyX9odtsz/ny4Cm7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBp -QWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YGVM+h4k0460tQtcsm9MracEpqoeJ5 -quGnM/b9Sh/22WA= ------END CERTIFICATE----- - -================================================================ -C: ES -O: Agencia Catalana de Certificacio (NIF Q-0801176-I) -OU: Serveis Publics de Certificacio -OU: Vegeu https://www.catcert.net/verarrel (c)03 -OU: Jerarquia Entitats de Certificacio Catalanes -CN: EC-ACC ------BEGIN CERTIFICATE----- -MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB -8zELMAkGA1UEBhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2Vy -dGlmaWNhY2lvIChOSUYgUS0wODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1 -YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYDVQQLEyxWZWdldSBodHRwczovL3d3 -dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UECxMsSmVyYXJxdWlh -IEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMTBkVD -LUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQG -EwJFUzE7MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8g -KE5JRiBRLTA4MDExNzYtSSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBD -ZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZlZ2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQu -bmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJhcnF1aWEgRW50aXRhdHMg -ZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUNDMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R -85iKw5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm -4CgPukLjbo73FCeTae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaV -HMf5NLWUhdWZXqBIoH7nF2W4onW4HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNd -QlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0aE9jD2z3Il3rucO2n5nzbcc8t -lGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw0JDnJwIDAQAB -o4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4 -opvpXY0wfwYDVR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBo -dHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidW -ZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAwDQYJKoZIhvcN -AQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJlF7W2u++AVtd0x7Y -/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNaAl6k -SBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhy -Rp/7SNVel+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOS -Agu+TGbrIP65y7WZf+a2E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xl -nJ2lYJU6Un/10asIbvPuW/mIPX64b24D5EI= ------END CERTIFICATE----- - -================================================================ -C: ES -O: Generalitat Valenciana -OU: PKIGVA -CN: Root CA Generalitat Valenciana ------BEGIN CERTIFICATE----- -MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJF -UzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJ -R1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcN -MDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3WjBoMQswCQYDVQQGEwJFUzEfMB0G -A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScw -JQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+ -WmmmO3I2F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKj -SgbwJ/BXufjpTjJ3Cj9BZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGl -u6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQD0EbtFpKd71ng+CT516nDOeB0/RSrFOy -A8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXteJajCq+TA81yc477OMUxk -Hl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMBAAGjggM7 -MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBr -aS5ndmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIIC -IwYKKwYBBAG/VQIBADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8A -cgBpAGQAYQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIA -YQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIAYQBsAGkAdABhAHQAIABWAGEA -bABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQByAGEAYwBpAPMA -bgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA -aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMA -aQBvAG4AYQBtAGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQA -ZQAgAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEA -YwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBuAHQAcgBhACAAZQBuACAAbABhACAA -ZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAAOgAvAC8AdwB3AHcA -LgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0dHA6 -Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+y -eAT8MIGVBgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQsw -CQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0G -A1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVu -Y2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRhTvW1yEICKrNcda3Fbcrn -lD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdzCkj+IHLt -b8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg -9J63NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XF -ducTZnV+ZfsBn5OHiJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmC -IoaZM3Fa6hlXPZHNqcCjbgcTpsnt+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= ------END CERTIFICATE----- - -================================================================ -C: ES -O: IZENPE S.A. -CN: Izenpe.com ------BEGIN CERTIFICATE----- -MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4 -MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6 -ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD -VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j -b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq -scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO -xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H -LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX -uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD -yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+ -JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q -rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN -BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L -hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB -QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+ -HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu -Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg -QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB -BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx -MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA -A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb -laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56 -awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo -JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw -LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT -VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk -LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb -UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/ -QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+ -naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls -QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== ------END CERTIFICATE----- - -================================================================ -C: EU -L: Madrid (see current address at www.camerfirma.com/address) -serialNumber: A82743287 -O: AC Camerfirma S.A. -CN: Chambers of Commerce Root - 2008 ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz -IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz -MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj -dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw -EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp -MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 -28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq -VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q -DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR -5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL -ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a -Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl -UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s -+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 -Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx -hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV -HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 -+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN -YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t -L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy -ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt -IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV -HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w -DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW -PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF -5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 -glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH -FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 -pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD -xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG -tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq -jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De -fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ -d0jQ ------END CERTIFICATE----- - -================================================================ -C: EU -L: Madrid (see current address at www.camerfirma.com/address) -serialNumber: A82743287 -O: AC Camerfirma S.A. -CN: Global Chambersign Root - 2008 ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx -MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy -cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG -A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl -BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed -KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 -G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 -zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 -ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG -HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 -Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V -yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e -beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r -6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog -zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW -BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr -ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp -ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk -cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt -YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC -CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow -KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI -hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ -UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz -X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x -fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz -a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd -Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd -SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O -AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso -M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge -v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE----- - -================================================================ -C: EU -O: AC Camerfirma SA CIF A82743287 -OU: http://www.chambersign.org -CN: Chambers of Commerce Root ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg -b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa -MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB -ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw -IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B -AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb -unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d -BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq -7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 -0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX -roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG -A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j -aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p -26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA -BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud -EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN -BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz -aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB -AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd -p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi -1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc -XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 -eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu -tGWaIZDgqtCYvDi1czyL+Nw= ------END CERTIFICATE----- - -================================================================ -C: EU -O: AC Camerfirma SA CIF A82743287 -OU: http://www.chambersign.org -CN: Global Chambersign Root ------BEGIN CERTIFICATE----- -MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENo -YW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYxNDE4WhcNMzcwOTMwMTYxNDE4WjB9 -MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgy -NzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4G -A1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUA -A4IBDQAwggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0 -Mi+ITaFgCPS3CU6gSS9J1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/s -QJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8Oby4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpV -eAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl6DJWk0aJqCWKZQbua795 -B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c8lCrEqWh -z0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0T -AQH/BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1i -ZXJzaWduLm9yZy9jaGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4w -TcbOX60Qq+UDpfqpFDAOBgNVHQ8BAf8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAH -MCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBjaGFtYmVyc2lnbi5vcmcwKgYD -VR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9yZzBbBgNVHSAE -VDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh -bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0B -AQUFAAOCAQEAPDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUM -bKGKfKX0j//U2K0X1S0E0T9YgOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXi -ryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJPJ7oKXqJ1/6v/2j1pReQvayZzKWG -VwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4IBHNfTIzSJRUTN3c -ecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREest2d/ -AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== ------END CERTIFICATE----- - -================================================================ -C: FI -O: Sonera -CN: Sonera Class1 CA ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAx -MDQwNjEwNDkxM1oXDTIxMDQwNjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMSBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H887dF+2rDNbS82rDTG -29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9EJUk -oVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk -3w0LBUXl0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBL -qdReLjVQCfOAl/QMF6452F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIIN -nvmLVz5MxxftLItyM19yejhW1ebZrgUaHXVFsculJRwSVzb9IjcCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZTiFIwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE928Jj2VuX -ZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0H -DjxVyhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VO -TzF2nBBhjrZTOqMRvq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2Uv -kVrCqIexVmiUefkl98HVrhq4uz2PqYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4w -zMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9ZIRlXvVWa ------END CERTIFICATE----- - -================================================================ -C: FI -O: Sonera -CN: Sonera Class2 CA ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx -MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o -Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt -5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s -3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej -vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu -8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil -zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ -3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD -FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 -Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 -ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M ------END CERTIFICATE----- - -================================================================ -C: FR -O: Certinomis -OU: 0002 433998903 -CN: Certinomis - Autorité Racine ------BEGIN CERTIFICATE----- -MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjET -MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAk -BgNVBAMMHUNlcnRpbm9taXMgLSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4 -Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNl -cnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYwJAYDVQQDDB1DZXJ0 -aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jY -F1AMnmHawE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N -8y4oH3DfVS9O7cdxbwlyLu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWe -rP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K -/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92NjMD2AR5vpTESOH2VwnHu -7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9qc1pkIuVC -28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6 -lSTClrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1E -nn1So2+WLhl+HPNbxxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB -0iSVL1N6aaLwD4ZFjliCK0wi1F6g530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql09 -5gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna4NH4+ej9Uji29YnfAgMBAAGj -WzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQN -jLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ -KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9s -ov3/4gbIOZ/xWqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZM -OH8oMDX/nyNTt7buFHAAQCvaR6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q -619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40nJ+U8/aGH88bc62UeYdocMMzpXDn -2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1BCxMjidPJC+iKunqj -o3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjvJL1v -nxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG -5ERQL1TEqkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWq -pdEdnV1j6CTmNhTih60bWfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZb -dsLLO7XSAPCjDuGtbkD326C00EauFddEwk01+dIL8hf2rGbVJLJP0RyZwG71fet0 -BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/vgt2Fl43N+bYdJeimUV5 ------END CERTIFICATE----- - -================================================================ -C: FR -O: Certplus -CN: Class 2 Primary CA ------BEGIN CERTIFICATE----- -MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAw -PTELMAkGA1UEBhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFz -cyAyIFByaW1hcnkgQ0EwHhcNOTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9 -MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2VydHBsdXMxGzAZBgNVBAMTEkNsYXNz -IDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANxQ -ltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR5aiR -VhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyL -kcAbmXuZVg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCd -EgETjdyAYveVqUSISnFOYFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yas -H7WLO7dDWWuwJKZtkIvEcupdM5i3y95ee++U8Rs+yskhwcWYAqqi9lt3m/V+llU0 -HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRMECDAGAQH/AgEKMAsGA1Ud -DwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJYIZIAYb4 -QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMu -Y29tL0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/ -AN9WM2K191EBkOvDP9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8 -yfFC82x/xXp8HVGIutIKPidd3i1RTtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMR -FcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+7UCmnYR0ObncHoUW2ikbhiMA -ybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW//1IMwrh3KWB -kJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 -l7+ijrRU ------END CERTIFICATE----- - -================================================================ -C: FR -O: Dhimyotis -CN: Certigna ------BEGIN CERTIFICATE----- -MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV -BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X -DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ -BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 -QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny -gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw -zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q -130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 -JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw -ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT -AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj -AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG -9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h -bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc -fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu -HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w -t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw -WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== ------END CERTIFICATE----- - -================================================================ -C: FR -ST: France -L: Paris -O: PM/SGDN -OU: DCSSI -CN: IGC/A -emailAddress: igca@sgdn.pm.gouv.fr ------BEGIN CERTIFICATE----- -MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYT -AkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQ -TS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG -9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMB4XDTAyMTIxMzE0MjkyM1oXDTIw -MTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAM -BgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEO -MAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2 -LmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaI -s9z4iPf930Pfeo2aSVz2TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2 -xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCWSo7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4 -u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYyHF2fYPepraX/z9E0+X1b -F8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNdfrGoRpAx -Vs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGd -PDPQtQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNV -HSAEDjAMMAoGCCqBegF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAx -NjAfBgNVHSMEGDAWgBSjBS8YYFDCiQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUF -AAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RKq89toB9RlPhJy3Q2FLwV3duJ -L92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3QMZsyK10XZZOY -YLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg -Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2a -NjSaTFR+FwNIlQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R -0982gaEbeC9xs/FZTEYYKKuF0mBWWg== ------END CERTIFICATE----- - -================================================================ -C: GB -O: Trustis Limited -OU: Trustis FPS Root CA ------BEGIN CERTIFICATE----- -MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBF -MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQL -ExNUcnVzdGlzIEZQUyBSb290IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTEx -MzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1RydXN0aXMgTGltaXRlZDEc -MBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQRUN+ -AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihH -iTHcDnlkH5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjj -vSkCqPoc4Vu5g6hBSLwacY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA -0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zto3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlB -OrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEAAaNTMFEwDwYDVR0TAQH/ -BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAdBgNVHQ4E -FgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01 -GX2cGE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmW -zaD+vkAMXBJV+JOCyinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP4 -1BIy+Q7DsdwyhEQsb8tGD+pmQQ9P8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZE -f1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHVl/9D7S3B2l0pKoU/rGXuhg8F -jZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYliB6XzCGcKQEN -ZetX2fNXlrtIzYE= ------END CERTIFICATE----- - -================================================================ -C: GB -ST: Greater Manchester -L: Salford -O: Comodo CA Limited -CN: AAA Certificate Services ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj -YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM -GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua -BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe -3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 -YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR -rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm -ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU -oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF -MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v -QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t -b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF -AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q -GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 -G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi -l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 -smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- - -================================================================ -C: GB -ST: Greater Manchester -L: Salford -O: Comodo CA Limited -CN: Secure Certificate Services ------BEGIN CERTIFICATE----- -MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp -ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow -fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV -BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM -cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S -HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996 -CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk -3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz -6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV -HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud -EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv -Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw -Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww -DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0 -5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj -Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI -gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ -aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl -izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk= ------END CERTIFICATE----- - -================================================================ -C: GB -ST: Greater Manchester -L: Salford -O: Comodo CA Limited -CN: Trusted Certificate Services ------BEGIN CERTIFICATE----- -MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0 -aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla -MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO -BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD -VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW -fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt -TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL -fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW -1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7 -kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G -A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v -ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo -dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu -Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/ -HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 -pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS -jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+ -xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn -dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi ------END CERTIFICATE----- - -================================================================ -C: GB -ST: Greater Manchester -L: Salford -O: COMODO CA Limited -CN: COMODO Certification Authority ------BEGIN CERTIFICATE----- -MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB -gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV -BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw -MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl -YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P -RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 -UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI -2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 -Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp -+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ -DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O -nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW -/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g -PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u -QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY -SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv -IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ -RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 -zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd -BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB -ZQ== ------END CERTIFICATE----- - -================================================================ -C: GB -ST: Greater Manchester -L: Salford -O: COMODO CA Limited -CN: COMODO ECC Certification Authority ------BEGIN CERTIFICATE----- -MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT -IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw -MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy -ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N -T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR -FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J -cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW -BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm -fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv -GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= ------END CERTIFICATE----- - -================================================================ -C: GR -O: Hellenic Academic and Research Institutions Cert. Authority -CN: Hellenic Academic and Research Institutions RootCA 2011 ------BEGIN CERTIFICATE----- -MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix -RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 -dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p -YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw -NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK -EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl -cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl -c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz -dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ -fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns -bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD -75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP -FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV -HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp -5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu -b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA -A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p -6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 -TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7 -dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys -Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI -l7WdmplNsDz4SgCbZN2fOUvRJ9e4 ------END CERTIFICATE----- - -================================================================ -C: HK -O: Hongkong Post -CN: Hongkong Post Root CA 1 ------BEGIN CERTIFICATE----- -MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx -FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg -Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG -A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr -b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ -jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn -PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh -ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9 -nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h -q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED -MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC -mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3 -7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB -oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs -EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO -fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi -AmvZWg== ------END CERTIFICATE----- - -================================================================ -C: HU -L: Budapest -O: Microsec Ltd. -CN: Microsec e-Szigno Root CA 2009 -emailAddress: info@e-szigno.hu ------BEGIN CERTIFICATE----- -MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD -VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 -ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G -CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y -OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx -FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp -Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o -dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP -kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc -cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U -fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 -N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC -xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 -+rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G -A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM -Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG -SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h -mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk -ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 -tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c -2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t -HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW ------END CERTIFICATE----- - -================================================================ -C: HU -L: Budapest -O: NetLock Kft. -OU: Tanúsítványkiadók (Certification Services) -CN: NetLock Arany (Class Gold) Főtanúsítvány ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG -EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 -MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl -cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR -dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB -pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM -b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm -aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz -IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT -lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz -AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 -VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG -ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 -BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG -AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M -U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh -bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C -+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC -bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F -uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 -XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= ------END CERTIFICATE----- - -================================================================ -C: HU -L: Budapest -O: Microsec Ltd. -OU: e-Szigno CA -CN: Microsec e-Szigno Root CA ------BEGIN CERTIFICATE----- -MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAw -cjELMAkGA1UEBhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNy -b3NlYyBMdGQuMRQwEgYDVQQLEwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9z -ZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0MDYxMjI4NDRaFw0xNzA0MDYxMjI4 -NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEWMBQGA1UEChMN -TWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMTGU1p -Y3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2u -uO/TEdyB5s87lozWbxXGd36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+ -LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/NoqdNAoI/gqyFxuEPkEeZlApxcpMqyabA -vjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjcQR/Ji3HWVBTji1R4P770 -Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJPqW+jqpx -62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcB -AQRbMFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3Aw -LQYIKwYBBQUHMAKGIWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAP -BgNVHRMBAf8EBTADAQH/MIIBcwYDVR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIB -AQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3LmUtc3ppZ25vLmh1L1NaU1ov -MIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0AdAB2AOEAbgB5 -ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn -AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABT -AHoAbwBsAGcA4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABh -ACAAcwB6AGUAcgBpAG4AdAAgAGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABo -AHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMAegBpAGcAbgBvAC4AaAB1AC8AUwBa -AFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6Ly93d3cuZS1zemln -bm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NOPU1p -Y3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxP -PU1pY3Jvc2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZv -Y2F0aW9uTGlzdDtiaW5hcnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuB -EGluZm9AZS1zemlnbm8uaHWkdzB1MSMwIQYDVQQDDBpNaWNyb3NlYyBlLVN6aWdu -w7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhTWjEWMBQGA1UEChMNTWlj -cm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhVMIGsBgNV -HSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJI -VTERMA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDAS -BgNVBAsTC2UtU3ppZ25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBS -b290IENBghEAzLjnv04pGv2i3GalHCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS -8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMTnGZjWS7KXHAM/IO8VbH0jgds -ZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FEaGAHQzAxQmHl -7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a -86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfR -hUZLphK3dehKyVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/ -MPMMNz7UwiiAc7EBt51alhQBS6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= ------END CERTIFICATE----- - -================================================================ -C: HU -L: Budapest -O: NetLock Halozatbiztonsagi Kft. -OU: Tanusitvanykiadok -CN: NetLock Expressz (Class C) Tanusitvanykiado ------BEGIN CERTIFICATE----- -MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQD -EytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBDKSBUYW51c2l0dmFueWtpYWRvMB4X -DTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJBgNVBAYTAkhVMREw -DwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9u -c2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMr -TmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNA -OoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3ZW3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC -2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63euyucYT2BDMIJTLrdKwW -RMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQwDgYDVR0P -AQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEW -ggJNRklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0 -YWxhbm9zIFN6b2xnYWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFz -b2sgYWxhcGphbiBrZXN6dWx0LiBBIGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBO -ZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1iaXp0b3NpdGFzYSB2ZWRpLiBB -IGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0ZWxlIGF6IGVs -b2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs -ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25s -YXBqYW4gYSBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kg -a2VyaGV0byBheiBlbGxlbm9yemVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4g -SU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5kIHRoZSB1c2Ugb2YgdGhpcyBjZXJ0 -aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQUyBhdmFpbGFibGUg -YXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwgYXQg -Y3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmY -ta3UzbM2xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2g -pO0u9f38vf5NNwgMvOOWgyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4 -Fp1hBWeAyNDYpQcCNJgEjTME1A== ------END CERTIFICATE----- - -================================================================ -C: HU -L: Budapest -O: NetLock Halozatbiztonsagi Kft. -OU: Tanusitvanykiadok -CN: NetLock Minositett Kozjegyzoi (Class QA) Tanusitvanykiado -emailAddress: info@netlock.hu ------BEGIN CERTIFICATE----- -MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQD -EzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVneXpvaSAoQ2xhc3MgUUEpIFRhbnVz -aXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0bG9jay5odTAeFw0w -MzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTERMA8G -A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh -Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5l -dExvY2sgTWlub3NpdGV0dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZh -bnlraWFkbzEeMBwGCSqGSIb3DQEJARYPaW5mb0BuZXRsb2NrLmh1MIIBIjANBgkq -hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRVCacbvWy5FPSKAtt2/Goq -eKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e8ia6AFQe -r7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO5 -3Lhbm+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWd -vLrqOU+L73Sa58XQ0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0l -mT+1fMptsK6ZmfoIYOcZwvK9UdPM0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4IC -wDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8EBAMCAQYwggJ1Bglg -hkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2YW55IGEgTmV0 -TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh -biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQg -ZWxla3Ryb25pa3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywg -dmFsYW1pbnQgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6 -b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwgYXogQWx0YWxhbm9zIFN6ZXJ6b2Rl -c2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kgZWxqYXJhcyBtZWd0 -ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczovL3d3 -dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0Bu -ZXRsb2NrLm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBh -bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRo -ZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3 -Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0IGluZm9AbmV0bG9jay5u -ZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3DQEBBQUA -A4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQ -MznNwNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+ -NFAwLvt/MpqNPfMgW/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCR -VCHnpgu0mfVRQdzNo0ci2ccBgcTcR08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY -83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR5qq5aKrN9p2QdRLqOBrKROi3 -macqaJVmlaut74nLYKkGEsaUR+ko ------END CERTIFICATE----- - -================================================================ -C: HU -L: Budapest -O: NetLock Halozatbiztonsagi Kft. -OU: Tanusitvanykiadok -CN: NetLock Uzleti (Class B) Tanusitvanykiado ------BEGIN CERTIFICATE----- -MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQD -EylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikgVGFudXNpdHZhbnlraWFkbzAeFw05 -OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYDVQQGEwJIVTERMA8G -A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh -Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5l -dExvY2sgVXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqG -SIb3DQEBAQUAA4GNADCBiQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xK -gZjupNTKihe5In+DCnVMm8Bp2GQ5o+2So/1bXHQawEfKOml2mrriRBf8TKPV/riX -iK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr1nGTLbO/CVRY7QbrqHvc -Q7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8E -BAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1G -SUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFu -b3MgU3pvbGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBh -bGFwamFuIGtlc3p1bHQuIEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExv -Y2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGln -aXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0 -IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh -c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGph -biBhIGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJo -ZXRvIGF6IGVsbGVub3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBP -UlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmlj -YXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBo -dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNA -bmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06 -sPgzTEdM43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXa -n3BukxowOR0w2y7jfLKRstE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKS -NitjrFgBazMpUIaD8QFI ------END CERTIFICATE----- - -================================================================ -C: HU -ST: Hungary -L: Budapest -O: NetLock Halozatbiztonsagi Kft. -OU: Tanusitvanykiadok -CN: NetLock Kozjegyzoi (Class A) Tanusitvanykiado ------BEGIN CERTIFICATE----- -MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhV -MRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMe -TmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0 -dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFzcyBB -KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oXDTE5MDIxOTIzMTQ0 -N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhC -dWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQu -MRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBL -b3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSMD7tM9DceqQWC2ObhbHDqeLVu0ThEDaiD -zl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZz+qMkjvN9wfcZnSX9EUi -3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC/tmwqcm8 -WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LY -Oph7tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2Esi -NCubMvJIH5+hCoR64sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCC -ApswDgYDVR0PAQH/BAQDAgAGMBIGA1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4 -QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZRUxFTSEgRXplbiB0 -YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRhdGFz -aSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu -IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtm -ZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMg -ZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVs -amFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJhc2EgbWVndGFsYWxoYXRv -IGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBzOi8vd3d3 -Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6 -ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1 -YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3Qg -dG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRs -b2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNAbmV0bG9jay5uZXQuMA0G -CSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5ayZrU3/b39/zcT0mwBQO -xmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjPytoUMaFP -0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQ -QeJBCWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxk -f1qbFFgBJ34TUMdrKuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK -8CtmdWOMovsEPoMOmzbwGOQmIMOM8CgHrTwXZoi1/baI ------END CERTIFICATE----- - -================================================================ -C: IE -O: Baltimore -OU: CyberTrust -CN: Baltimore CyberTrust Root ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD -VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX -DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y -ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy -VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr -mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr -IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK -mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu -XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy -dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye -jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 -BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 -DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 -9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx -jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 -Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz -ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS -R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- - -================================================================ -C: IL -O: StartCom Ltd. -CN: StartCom Certification Authority G2 ------BEGIN CERTIFICATE----- -MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1 -OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG -A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ -JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD -vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo -D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/ -Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW -RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK -HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN -nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM -0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i -UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9 -Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg -TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE -AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL -BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K -2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX -UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl -6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK -9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ -HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI -wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY -XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l -IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo -hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr -so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI ------END CERTIFICATE----- - -================================================================ -C: IL -O: StartCom Ltd. -OU: Secure Digital Certificate Signing -CN: StartCom Certification Authority ------BEGIN CERTIFICATE----- -MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg -Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 -MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi -U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh -cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk -pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf -OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C -Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT -Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi -HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM -Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w -+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ -Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 -Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B -26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID -AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE -FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j -ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js -LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM -BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 -Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy -dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh -cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh -YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg -dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp -bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ -YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT -TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ -9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 -jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW -FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz -ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 -ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L -EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu -L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq -yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC -O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V -um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh -NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= ------END CERTIFICATE----- - -================================================================ -C: IL -O: StartCom Ltd. -OU: Secure Digital Certificate Signing -CN: StartCom Certification Authority ------BEGIN CERTIFICATE----- -MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg -Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 -MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi -U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh -cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk -pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf -OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C -Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT -Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi -HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM -Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w -+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ -Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 -Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B -26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID -AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD -VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul -F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC -ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w -ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk -aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 -YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg -c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 -d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG -CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF -wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS -Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst -0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc -pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl -CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF -P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK -1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm -KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE -JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ -8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm -fyWl8kgAwKQB2j8= ------END CERTIFICATE----- - -================================================================ -C: IT -L: Milan -O: Actalis S.p.A./03358520967 -CN: Actalis Authentication Root CA ------BEGIN CERTIFICATE----- -MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE -BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w -MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 -IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC -SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 -ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv -UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX -4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 -KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ -gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb -rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ -51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F -be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe -KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F -v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn -fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 -jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz -ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt -ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL -e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 -jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz -WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V -SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j -pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX -X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok -fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R -K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU -ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU -LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT -LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== ------END CERTIFICATE----- - -================================================================ -C: JP -O: Japan Certification Services, Inc. -CN: SecureSign RootCA11 ------BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr -MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG -A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0 -MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp -Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD -QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz -i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8 -h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV -MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9 -UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni -8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC -h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD -VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB -AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm -KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ -X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr -QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5 -pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN -QSdJQO7e5iNEOdyhIta6A/I= ------END CERTIFICATE----- - -================================================================ -C: JP -O: Japanese Government -OU: ApplicationCA ------BEGIN CERTIFICATE----- -MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEc -MBoGA1UEChMTSmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRp -b25DQTAeFw0wNzEyMTIxNTAwMDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYT -AkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zlcm5tZW50MRYwFAYDVQQLEw1BcHBs -aWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp23gdE6H -j6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4fl+K -f5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55 -IrmTwcrNwVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cw -FO5cjFW6WY2H/CPek9AEjP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDiht -QWEjdnjDuGWk81quzMKq2edY3rZ+nYVunyoKb58DKTCXKB28t89UKU5RMfkntigm -/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRUWssmP3HMlEYNllPqa0jQ -k/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNVBAYTAkpQ -MRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOC -seODvOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADlqRHZ3ODrso2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJ -hyzjVOGjprIIC8CFqMjSnHH2HZ9g/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+ -eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYDio+nEhEMy/0/ecGc/WLuo89U -DNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmWdupwX3kSa+Sj -B1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL -rosot4LKGAfmt1t06SAZf7IbiVQ= ------END CERTIFICATE----- - -================================================================ -C: JP -O: SECOM Trust Systems CO.,LTD. -OU: Security Communication EV RootCA1 ------BEGIN CERTIFICATE----- -MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz -MloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09N -IFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNlY3VyaXR5IENvbW11 -bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSE -RMqm4miO/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gO -zXppFodEtZDkBp2uoQSXWHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5 -bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4zZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDF -MxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4bepJz11sS6/vmsJWXMY1 -VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK9U2vP9eC -OKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HW -tWS3irO4G8za+6xmiEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZ -q51ihPZRwSzJIxXYKLerJRO1RuGGAv8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDb -EJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnWmHyojf6GPgcWkuF75x3sM3Z+ -Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEWT1MKZPlO9L9O -VL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 ------END CERTIFICATE----- - -================================================================ -C: JP -O: SECOM Trust Systems CO.,LTD. -OU: Security Communication RootCA2 ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX -DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy -dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj -YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV -OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr -zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM -VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ -hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO -ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw -awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs -OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 -DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF -coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc -okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 -t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy -1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ -SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 ------END CERTIFICATE----- - -================================================================ -C: JP -O: SECOM Trust.net -OU: Security Communication RootCA1 ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- - -================================================================ -C: NL -O: Staat der Nederlanden -CN: Staat der Nederlanden Root CA - G2 ------BEGIN CERTIFICATE----- -MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO -TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh -dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oX -DTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl -ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv -b3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ5291 -qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8Sp -uOUfiUtnvWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPU -Z5uW6M7XxgpT0GtJlvOjCwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvE -pMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiile7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp -5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCROME4HYYEhLoaJXhena/M -UGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpICT0ugpTN -GmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy -5V6548r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv -6q012iDTiIJh8BIitrzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEK -eN5KzlW/HdXZt1bv8Hb/C3m1r737qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6 -B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMBAAGjgZcwgZQwDwYDVR0TAQH/ -BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcCARYxaHR0cDov -L3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqG -SIb3DQEBCwUAA4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLyS -CZa59sCrI2AGeYwRTlHSeYAz+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen -5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwjf/ST7ZwaUb7dRUG/kSS0H4zpX897 -IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaNkqbG9AclVMwWVxJK -gnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfkCpYL -+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxL -vJxxcypFURmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkm -bEgeqmiSBeGCc1qb3AdbCG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvk -N1trSt8sV4pAWja63XVECDdCcAz+3F4hoKOKwJCcaNpQ5kUQR3i2TtJlycM33+FC -Y7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoVIPVVYpbtbZNQvOSqeK3Z -ywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm66+KAQ== ------END CERTIFICATE----- - -================================================================ -C: NL -O: Staat der Nederlanden -CN: Staat der Nederlanden Root CA ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJO -TDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFh -dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEy -MTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4wHAYDVQQKExVTdGFhdCBkZXIgTmVk -ZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENB -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFtvszn -ExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw71 -9tV2U02PjLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MO -hXeiD+EwR+4A5zN9RGcaC1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+U -tFE5A3+y3qcym7RHjm+0Sq7lr7HcsBthvJly3uSJt3omXdozSVtSnA71iq3DuD3o -BmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn622r+I/q85Ej0ZytqERAh -SQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRVHSAAMDww -OgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMv -cm9vdC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA -7Jbg0zTBLL9s+DANBgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k -/rvuFbQvBgwp8qiSpGEN/KtcCFtREytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzm -eafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbwMVcoEoJz6TMvplW0C5GUR5z6 -u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3ynGQI0DvDKcWy -7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR -iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== ------END CERTIFICATE----- - -================================================================ -C: NO -O: Buypass AS-983163327 -CN: Buypass Class 2 CA 1 ------BEGIN CERTIFICATE----- -MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3Mg -Q2xhc3MgMiBDQSAxMB4XDTA2MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzEL -MAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MR0wGwYD -VQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7McXA0 -ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLX -l18xoS830r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVB -HfCuuCkslFJgNJQ72uA40Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B -5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/RuFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3 -WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNCMEAwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0PAQH/BAQD -AgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLP -gcIV1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+ -DKhQ7SLHrQVMdvvt7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKu -BctN518fV4bVIJwo+28TOPX2EZL2fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHs -h7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5wwDX3OaJdZtB7WZ+oRxKaJyOk -LY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho ------END CERTIFICATE----- - -================================================================ -C: NO -O: Buypass AS-983163327 -CN: Buypass Class 2 Root CA ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg -Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow -TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw -HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB -BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr -6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV -L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 -1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx -MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ -QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB -arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr -Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi -FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS -P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN -9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP -AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz -uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h -9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s -A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t -OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo -+fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 -KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 -DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us -H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ -I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 -5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h -3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz -Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= ------END CERTIFICATE----- - -================================================================ -C: NO -O: Buypass AS-983163327 -CN: Buypass Class 3 CA 1 ------BEGIN CERTIFICATE----- -MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3Mg -Q2xhc3MgMyBDQSAxMB4XDTA1MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzEL -MAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MR0wGwYD -VQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKxifZg -isRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//z -NIqeKNc0n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI -+MkcVyzwPX6UvCWThOiaAJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2R -hzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+ -mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNCMEAwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0PAQH/BAQD -AgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFP -Bdy7pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27s -EzNxZy5p+qksP2bAEllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2 -mSlf56oBzKwzqBwKu5HEA6BvtjT5htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yC -e/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQjel/wroQk5PMr+4okoyeYZdow -dXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 ------END CERTIFICATE----- - -================================================================ -C: NO -O: Buypass AS-983163327 -CN: Buypass Class 3 Root CA ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg -Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow -TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw -HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB -BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y -ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E -N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 -tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX -0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c -/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X -KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY -zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS -O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D -34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP -K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 -AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv -Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj -QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV -cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS -IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 -HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa -O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv -033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u -dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE -kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 -3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD -u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq -4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= ------END CERTIFICATE----- - -================================================================ -C: PL -O: Unizeto Sp. z o.o. -CN: Certum CA ------BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E -jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo -ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI -ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu -Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg -AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 -HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA -uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa -TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg -xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q -CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x -O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs -6GAqm4VKQPNriiTsBhYscw== ------END CERTIFICATE----- - -================================================================ -C: PL -O: Unizeto Technologies S.A. -OU: Certum Certification Authority -CN: Certum Trusted Network CA ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM -MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D -ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU -cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 -WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg -Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw -IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH -UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM -TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU -BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM -kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x -AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV -HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y -sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL -I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 -J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY -VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- - -================================================================ -C: RO -O: certSIGN -OU: certSIGN ROOT CA ------BEGIN CERTIFICATE----- -MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT -AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD -QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP -MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do -0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ -UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d -RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ -OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv -JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C -AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O -BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ -LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY -MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ -44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I -Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw -i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN -9u6wWk5JRFRYX0KD ------END CERTIFICATE----- - -================================================================ -C: SE -O: AddTrust AB -OU: AddTrust External TTP Network -CN: AddTrust External CA Root ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- - -================================================================ -C: SE -O: AddTrust AB -OU: AddTrust TTP Network -CN: AddTrust Class 1 CA Root ------BEGIN CERTIFICATE----- -MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw -MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD -VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul -CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n -tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl -dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch -PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC -+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O -BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl -MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk -ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB -IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X -7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz -43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY -eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl -pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA -WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= ------END CERTIFICATE----- - -================================================================ -C: SE -O: AddTrust AB -OU: AddTrust TTP Network -CN: AddTrust Public CA Root ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx -MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB -ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV -BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV -6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX -GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP -dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH -1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF -62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW -BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw -AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL -MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU -cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv -b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6 -IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/ -iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao -GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh -4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm -XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY= ------END CERTIFICATE----- - -================================================================ -C: SE -O: AddTrust AB -OU: AddTrust TTP Network -CN: AddTrust Qualified CA Root ------BEGIN CERTIFICATE----- -MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 -MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK -EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh -BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq -xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G -87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i -2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U -WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 -0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G -A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr -pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL -ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm -aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv -hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm -hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X -dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 -P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y -iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no -xqE= ------END CERTIFICATE----- - -================================================================ -C: SK -L: Bratislava -O: Disig a.s. -CN: CA Disig ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzET -MBEGA1UEBxMKQnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UE -AxMIQ0EgRGlzaWcwHhcNMDYwMzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQsw -CQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcg -YS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgmGErE -Nx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnX -mjxUizkDPw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYD -XcDtab86wYqg6I7ZuUUohwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhW -S8+2rT+MitcE5eN4TPWGqvWP+j1scaMtymfraHtuM6kMgiioTGohQBUgDCZbg8Kp -FhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8wgfwwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0PAQH/BAQD -AgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cu -ZGlzaWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5z -ay9jYS9jcmwvY2FfZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2sv -Y2EvY3JsL2NhX2Rpc2lnLmNybDAaBgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEw -DQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59tWDYcPQuBDRIrRhCA/ec8J9B6 -yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3mkkp7M5+cTxq -EEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ -CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeB -EicTXxChds6KezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFN -PGO+I++MzVpQuGhU+QqZMxEA4Z7CRneC9VkGjCFMhwnN5ag= ------END CERTIFICATE----- - -================================================================ -C: SK -L: Bratislava -O: Disig a.s. -CN: CA Disig Root R1 ------BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNV -BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu -MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQy -MDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx -EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjEw -ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy3QRk -D2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/o -OI7bm+V8u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3A -fQ+lekLZWnDZv6fXARz2m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJe -IgpFy4QxTaz+29FHuvlglzmxZcfe+5nkCiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8n -oc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTaYVKvJrT1cU/J19IG32PK -/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6vpmumwKj -rckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD -3AjLLhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE -7cderVC6xkGbrPAXZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkC -yC2fg69naQanMVXVz0tv/wQFx1isXxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLd -qvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ04IwDQYJKoZI -hvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR -xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaA -SfX8MPWbTx9BLxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXo -HqJPYNcHKfyyo6SdbhWSVhlMCrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpB -emOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5GfbVSUZP/3oNn6z4eGBrxEWi1CXYBmC -AMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85YmLLW1AL14FABZyb -7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKSds+x -DzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvk -F7mGnjixlAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqF -a3qdnom2piiZk4hA9z7NUaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsT -Q6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJa7+h89n07eLw4+1knj0vllJPgFOL ------END CERTIFICATE----- - -================================================================ -C: SK -L: Bratislava -O: Disig a.s. -CN: CA Disig Root R2 ------BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV -BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu -MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy -MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx -EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw -ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe -NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH -PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I -x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe -QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR -yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO -QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 -H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ -QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD -i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs -nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 -rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI -hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM -tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf -GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb -lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka -+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal -TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i -nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 -gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr -G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os -zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x -L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL ------END CERTIFICATE----- - -================================================================ -C: TR -L: Gebze - Kocaeli -O: Türkiye Bilimsel ve Teknolojik Araştırma Kurumu - TÜBİTAK -OU: Ulusal Elektronik ve Kriptoloji Araştırma Enstitüsü - UEKAE -OU: Kamu Sertifikasyon Merkezi -CN: TÜBİTAK UEKAE Kök Sertifika Hizmet Sağlayıcısı - Sürüm 3 ------BEGIN CERTIFICATE----- -MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRS -MRgwFgYDVQQHDA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJp -bGltc2VsIHZlIFRla25vbG9qaWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSw -VEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ryb25payB2ZSBLcmlwdG9sb2ppIEFy -YcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNVBAsMGkthbXUgU2Vy -dGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUgS8O2 -ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAe -Fw0wNzA4MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIx -GDAWBgNVBAcMD0dlYnplIC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmls -aW1zZWwgdmUgVGVrbm9sb2ppayBBcmHFn3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBU -QUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZlIEtyaXB0b2xvamkgQXJh -xZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2FtdSBTZXJ0 -aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7Zr -IFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4h -gb46ezzb8R1Sf1n68yJMlaCQvEhOEav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yK -O7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1xnnRFDDtG1hba+818qEhTsXO -fJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR6Oqeyjh1jmKw -lZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL -hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQID -AQABo0IwQDAdBgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmP -NOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4N5EY3ATIZJkrGG2AA1nJrvhY0D7t -wyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLTy9LQQfMmNkqblWwM -7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYhLBOh -gLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5n -oN+J1q2MdqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUs -yZyQ2uypQjyttgI= ------END CERTIFICATE----- - -================================================================ -C: TR -O: Elektronik Bilgi Guvenligi A.S. -CN: e-Guven Kok Elektronik Sertifika Hizmet Saglayicisi ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1 -MQswCQYDVQQGEwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxp -Z2kgQS5TLjE8MDoGA1UEAxMzZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZp -a2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3MDEwNDExMzI0OFoXDTE3MDEwNDEx -MzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0cm9uaWsgQmlsZ2kg -R3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9uaWsg -U2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdU -MZTe1RK6UxYC6lhj71vY8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlT -L/jDj/6z/P2douNffb7tC+Bg62nsM+3YjfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H -5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAIJjjcJRFHLfO6IxClv7wC -90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk9Ok0oSy1 -c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoE -VtstxNulMA0GCSqGSIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLP -qk/CaOv/gKlR6D1id4k9CnU58W5dF4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S -/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwqD2fK/A+JYZ1lpTzlvBNbCNvj -/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4Vwpm+Vganf2X -KWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq -fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX ------END CERTIFICATE----- - -================================================================ -C: TW -O: Chunghwa Telecom Co., Ltd. -OU: ePKI Root Certification Authority ------BEGIN CERTIFICATE----- -MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe -MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 -ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw -IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL -SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH -SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh -ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X -DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 -TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ -fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA -sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU -WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS -nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH -dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip -NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC -AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF -MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH -ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB -uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl -PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP -JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ -gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 -j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 -5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB -o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS -/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z -Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE -W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D -hNQ+IIX3Sj0rnP0qCglN6oH4EZw= ------END CERTIFICATE----- - -================================================================ -C: TW -O: Government Root Certification Authority ------BEGIN CERTIFICATE----- -MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/ -MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MB4XDTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1ow -PzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dvdmVybm1lbnQgUm9vdCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -AJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qNw8XR -IePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1q -gQdW8or5BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKy -yhwOeYHWtXBiCAEuTk8O1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAts -F/tnyMKtsc2AtJfcdgEWFelq16TheEfOhtX7MfP6Mb40qij7cEwdScevLJ1tZqa2 -jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wovJ5pGfaENda1UhhXcSTvx -ls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7Q3hub/FC -VGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHK -YS1tB6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoH -EgKXTiCQ8P8NHuJBO9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThN -Xo+EHWbNxWCWtFJaBYmOlXqYwZE8lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1Ud -DgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNVHRMEBTADAQH/MDkGBGcqBwAE -MTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg209yewDL7MTqK -UWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ -TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyf -qzvS/3WXy6TjZwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaK -ZEk9GhiHkASfQlK3T8v+R0F2Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFE -JPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlUD7gsL0u8qV1bYH+Mh6XgUmMqvtg7 -hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6QzDxARvBMB1uUO07+1 -EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+HbkZ6Mm -nD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WX -udpVBrkk7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44Vbnz -ssQwmSNOXfJIoRIM3BKQCZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDe -LMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAl -pYYsfPQS ------END CERTIFICATE----- - -================================================================ -C: TW -O: TAIWAN-CA -OU: Root CA -CN: TWCA Root Certification Authority ------BEGIN CERTIFICATE----- -MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES -MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU -V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz -WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO -LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE -AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH -K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX -RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z -rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx -3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq -hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC -MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls -XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D -lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn -aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ -YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== ------END CERTIFICATE----- - -================================================================ -C: US -O: AffirmTrust -CN: AffirmTrust Commercial ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz -dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL -MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp -cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP -Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr -ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL -MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 -yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr -VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ -nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ -KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG -XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj -vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt -Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g -N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC -nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= ------END CERTIFICATE----- - -================================================================ -C: US -O: AffirmTrust -CN: AffirmTrust Networking ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz -dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL -MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp -cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y -YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua -kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL -QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp -6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG -yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i -QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ -KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO -tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu -QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ -Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u -olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 -x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= ------END CERTIFICATE----- - -================================================================ -C: US -O: AffirmTrust -CN: AffirmTrust Premium ------BEGIN CERTIFICATE----- -MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz -dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG -A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U -cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf -qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ -JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ -+jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS -s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 -HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 -70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG -V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S -qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S -5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia -C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX -OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE -FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ -BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 -KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg -Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B -8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ -MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc -0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ -u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF -u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH -YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 -GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO -RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e -KeC2uAloGRwYQw== ------END CERTIFICATE----- - -================================================================ -C: US -O: AffirmTrust -CN: AffirmTrust Premium ECC ------BEGIN CERTIFICATE----- -MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC -VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ -cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ -BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt -VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D -0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 -ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G -A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs -aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I -flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== ------END CERTIFICATE----- - -================================================================ -C: US -O: America Online Inc. -CN: America Online Root Certification Authority 1 ------BEGIN CERTIFICATE----- -MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk -hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym -1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW -OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb -2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko -O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU -AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB -BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF -Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb -LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir -oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C -MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds -sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 ------END CERTIFICATE----- - -================================================================ -C: US -O: America Online Inc. -CN: America Online Root Certification Authority 2 ------BEGIN CERTIFICATE----- -MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC -206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci -KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 -JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 -BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e -Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B -PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 -Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq -Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ -o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 -+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj -YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj -FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE -AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn -xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 -LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc -obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 -CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe -IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA -DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F -AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX -Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb -AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl -Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw -RY8mkaKO/qk= ------END CERTIFICATE----- - -================================================================ -C: US -O: DigiCert Inc -OU: www.digicert.com -CN: DigiCert Assured ID Root CA ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c -JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP -mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ -wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 -VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ -AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB -AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun -pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC -dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf -fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm -NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx -H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- - -================================================================ -C: US -O: DigiCert Inc -OU: www.digicert.com -CN: DigiCert Global Root CA ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- - -================================================================ -C: US -O: DigiCert Inc -OU: www.digicert.com -CN: DigiCert High Assurance EV Root CA ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j -ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 -LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug -RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm -+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW -PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM -xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB -Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 -hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg -EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA -FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec -nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z -eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF -hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 -Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep -+OkuE6N36B9K ------END CERTIFICATE----- - -================================================================ -C: US -O: Digital Signature Trust -OU: DST ACES -CN: DST ACES CA X6 ------BEGIN CERTIFICATE----- -MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBb -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3Qx -ETAPBgNVBAsTCERTVCBBQ0VTMRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0w -MzExMjAyMTE5NThaFw0xNzExMjAyMTE5NThaMFsxCzAJBgNVBAYTAlVTMSAwHgYD -VQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UECxMIRFNUIEFDRVMx -FzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPu -ktKe1jzIDZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7 -gLFViYsx+tC3dr5BPTCapCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZH -fAjIgrrep4c9oW24MFbCswKBXy314powGCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4a -ahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPyMjwmR/onJALJfh1biEIT -ajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rk -c3QuY29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjto -dHRwOi8vd3d3LnRydXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMt -aW5kZXguaHRtbDAdBgNVHQ4EFgQUCXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZI -hvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V25FYrnJmQ6AgwbN99Pe7lv7Uk -QIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6tFr8hlxCBPeP/ -h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq -nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpR -rscL9yuwNwXsvFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf2 -9w4LTJxoeHtxMcfrHuBnQfO3oKfN5XozNmr6mis= ------END CERTIFICATE----- - -================================================================ -C: US -O: Digital Signature Trust Co. -OU: DSTCA E1 ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJV -UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQL -EwhEU1RDQSBFMTAeFw05ODEyMTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJ -BgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4x -ETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCg -bIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJENySZ -j9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlV -Sn5JTe2io74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCG -SAGG+EIBAQQEAwIABzBoBgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMx -JDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMI -RFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMTAxODEw -MjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFGp5 -fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i -+DAMBgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqG -SIb3DQEBBQUAA4GBACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lN -QseSJqBcNJo4cvj9axY+IO6CizEqkzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+ -gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4RbyhkwS7hp86W0N6w4pl ------END CERTIFICATE----- - -================================================================ -C: US -O: Digital Signature Trust Co. -OU: DSTCA E2 ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJV -UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQL -EwhEU1RDQSBFMjAeFw05ODEyMDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJ -BgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4x -ETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC/ -k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGODVvso -LeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3o -TQPMx7JSxhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCG -SAGG+EIBAQQEAwIABzBoBgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMx -JDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMI -RFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxOTE3 -MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFB6C -TShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5 -WzAMBgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqG -SIb3DQEBBQUAA4GBAEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHR -xdf0CiUPPXiBng+xZ8SQTGPdXqfiup/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVL -B3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1mPnHfxsb1gYgAlihw6ID ------END CERTIFICATE----- - -================================================================ -C: US -O: Entrust, Inc. -OU: www.entrust.net/CPS is incorporated by reference -OU: (c) 2006 Entrust, Inc. -CN: Entrust Root Certification Authority ------BEGIN CERTIFICATE----- -MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 -Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW -KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl -cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw -NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw -NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy -ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV -BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ -KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo -Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 -4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 -KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI -rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi -94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB -sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi -gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo -kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE -vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA -A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t -O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua -AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP -9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ -eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m -0vdXcDazv/wor3ElhVsT/h5/WrQ8 ------END CERTIFICATE----- - -================================================================ -C: US -O: Entrust.net -OU: www.entrust.net/CPS incorp. by ref. (limits liab.) -OU: (c) 1999 Entrust.net Limited -CN: Entrust.net Secure Server Certification Authority ------BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u -ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc -KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u -ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 -MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE -ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j -b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg -U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ -I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 -wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC -AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb -oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 -BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 -MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi -E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa -MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI -hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN -95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd -2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= ------END CERTIFICATE----- - -================================================================ -C: US -O: Equifax -OU: Equifax Secure Certificate Authority ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 -MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx -dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f -BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A -cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ -MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw -ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj -IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y -7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh -1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 ------END CERTIFICATE----- - -================================================================ -C: US -O: Equifax Secure Inc. -CN: Equifax Secure Global eBusiness CA-1 ------BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT -ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw -MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj -dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l -c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC -UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc -58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ -o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr -aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA -A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA -Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv -8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV ------END CERTIFICATE----- - -================================================================ -C: US -O: Equifax Secure Inc. -CN: Equifax Secure eBusiness CA-1 ------BEGIN CERTIFICATE----- -MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT -ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw -MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j -LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ -KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo -RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu -WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw -Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD -AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK -eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM -zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ -WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN -/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== ------END CERTIFICATE----- - -================================================================ -C: US -O: GTE Corporation -OU: GTE CyberTrust Solutions, Inc. -CN: GTE CyberTrust Global Root ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv -b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds -b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH -iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS -r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 -04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r -GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 -3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P -lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ ------END CERTIFICATE----- - -================================================================ -C: US -O: GeoTrust Inc. -CN: GeoTrust Global CA ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE----- - -================================================================ -C: US -O: GeoTrust Inc. -CN: GeoTrust Global CA 2 ------BEGIN CERTIFICATE----- -MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs -IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg -R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A -PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8 -Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL -TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL -5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7 -S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe -2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE -FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap -EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td -EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv -/NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN -A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0 -abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF -I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz -4iIprn2DQKi6bA== ------END CERTIFICATE----- - -================================================================ -C: US -O: GeoTrust Inc. -CN: GeoTrust Primary Certification Authority ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY -MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo -R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx -MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK -Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 -AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA -ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 -7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W -kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI -mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ -KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 -6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl -4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K -oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj -UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU -AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= ------END CERTIFICATE----- - -================================================================ -C: US -O: GeoTrust Inc. -CN: GeoTrust Universal CA ------BEGIN CERTIFICATE----- -MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy -c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE -BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 -IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV -VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 -cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT -QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh -F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v -c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w -mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd -VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX -teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ -f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe -Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ -nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB -/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY -MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG -9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc -aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX -IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn -ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z -uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN -Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja -QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW -koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 -ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt -DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm -bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= ------END CERTIFICATE----- - -================================================================ -C: US -O: GeoTrust Inc. -CN: GeoTrust Universal CA 2 ------BEGIN CERTIFICATE----- -MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy -c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD -VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 -c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 -WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG -FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq -XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL -se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb -KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd -IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 -y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt -hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc -QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 -Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV -HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ -KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z -dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ -L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr -Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo -ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY -T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz -GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m -1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV -OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH -6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX -QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS ------END CERTIFICATE----- - -================================================================ -C: US -O: GeoTrust Inc. -OU: (c) 2007 GeoTrust Inc. - For authorized use only -CN: GeoTrust Primary Certification Authority - G2 ------BEGIN CERTIFICATE----- -MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL -MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj -KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 -MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV -BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw -NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV -BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL -So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal -tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG -CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT -qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz -rD6ogRLQy7rQkgu2npaqBA+K ------END CERTIFICATE----- - -================================================================ -C: US -O: GeoTrust Inc. -OU: (c) 2008 GeoTrust Inc. - For authorized use only -CN: GeoTrust Primary Certification Authority - G3 ------BEGIN CERTIFICATE----- -MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB -mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT -MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ -BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg -MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 -BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz -+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm -hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn -5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W -JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL -DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC -huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw -HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB -AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB -zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN -kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD -AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH -SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G -spki4cErx5z481+oghLrGREt ------END CERTIFICATE----- - -================================================================ -C: US -O: Network Solutions L.L.C. -CN: Network Solutions Certificate Authority ------BEGIN CERTIFICATE----- -MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi -MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu -MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp -dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV -UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO -ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz -c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP -OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl -mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF -BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 -qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw -gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB -BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu -bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp -dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 -6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ -h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH -/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv -wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN -pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey ------END CERTIFICATE----- - -================================================================ -C: US -O: SecureTrust Corporation -CN: Secure Global CA ------BEGIN CERTIFICATE----- -MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx -MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg -Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ -iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa -/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ -jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI -HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 -sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w -gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw -KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG -AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L -URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO -H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm -I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY -iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc -f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW ------END CERTIFICATE----- - -================================================================ -C: US -O: SecureTrust Corporation -CN: SecureTrust CA ------BEGIN CERTIFICATE----- -MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz -MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv -cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz -Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO -0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao -wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj -7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS -8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT -BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB -/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg -JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC -NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 -6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ -3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm -D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS -CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR -3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= ------END CERTIFICATE----- - -================================================================ -C: US -O: Starfield Technologies, Inc. -OU: Starfield Class 2 Certification Authority ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl -MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp -U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw -NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE -ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp -ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 -DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf -8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN -+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 -X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa -K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA -1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G -A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR -zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 -YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD -bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w -DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 -L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D -eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp -VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY -WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- - -================================================================ -C: US -O: The Go Daddy Group, Inc. -OU: Go Daddy Class 2 Certification Authority ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh -MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE -YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 -MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo -ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg -MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN -ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA -PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w -wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi -EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY -avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ -YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE -sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h -/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 -IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy -OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P -TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER -dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf -ReYNnyicsbkqWletNw+vHX/bvZ8= ------END CERTIFICATE----- - -================================================================ -C: US -O: VISA -OU: Visa International Service Association -CN: Visa eCommerce Root ------BEGIN CERTIFICATE----- -MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBr -MQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRl -cm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv -bW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2WhcNMjIwNjI0MDAxNjEyWjBrMQsw -CQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5h -dGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1l -cmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h -2mCxlCfLF9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4E -lpF7sDPwsRROEW+1QK8bRaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdV -ZqW1LS7YgFmypw23RuwhY/81q6UCzyr0TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq -299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI/k4+oKsGGelT84ATB+0t -vz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzsGHxBvfaL -dXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD -AgEGMB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUF -AAOCAQEAX/FBfXxcCLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcR -zCSs00Rsca4BIGsDoo8Ytyk6feUWYFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3 -LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pzzkWKsKZJ/0x9nXGIxHYdkFsd -7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBuYQa7FkKMcPcw -++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt -398znM/jra6O1I7mT1GvFpLgXPYHDw== ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: Class 1 Public Primary Certification Authority ------BEGIN CERTIFICATE----- -MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAxIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0f -zGVuDLDQVoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHi -TkVWaR94AoDa3EeRKbs2yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0G -CSqGSIb3DQEBBQUAA4GBAFgVKTk8d6PaXCUDfGD67gmZPCcQcMgMCeazh88K4hiW -NWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n0a3hUKw8fGJLj7qE1xIV -Gx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZRjXZ+Hxb ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: Class 1 Public Primary Certification Authority - G2 -OU: (c) 1998 VeriSign, Inc. - For authorized use only -OU: VeriSign Trust Network ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYK -VdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSm -Fc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0J -h9ZrbWB85a7FkCMMXErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2ul -uIncrKTdcu1OofdPvAbT6shkdHvClUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68 -DzFc6PLZ ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: Class 2 Public Primary Certification Authority - G2 -OU: (c) 1998 VeriSign, Inc. - For authorized use only -OU: VeriSign Trust Network ------BEGIN CERTIFICATE----- -MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns -YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y -aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe -Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj -IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx -KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM -HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw -DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC -AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji -nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX -rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn -jBJ7xUS0rg== ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: Class 3 Public Primary Certification Authority ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: Class 3 Public Primary Certification Authority ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i -2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ -2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: Class 3 Public Primary Certification Authority - G2 -OU: (c) 1998 VeriSign, Inc. - For authorized use only -OU: VeriSign Trust Network ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: VeriSign Trust Network -OU: (c) 1999 VeriSign, Inc. - For authorized use only -CN: VeriSign Class 1 Public Primary Certification Authority - G3 ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4 -nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO -8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjV -ojYJrKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjb -PG7PoBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2 -6KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vr -n5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQBfGfMY1a -qtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/Ny9Sn2WCVhDr4 -wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 -ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrs -pSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4 -E1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: VeriSign Trust Network -OU: (c) 1999 VeriSign, Inc. - For authorized use only -CN: VeriSign Class 2 Public Primary Certification Authority - G3 ------BEGIN CERTIFICATE----- -MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVy -aVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24s -IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNp -Z24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJBgNV -BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp -Z24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24g -Q2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt -IEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWU -J92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDO -JxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUY -wZF7C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9o -koqQHgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN -qWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/E -Srg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekhktdmnLfe -xbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf0xwLRtxyID+u -7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU -sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RI -sH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTP -cjnhsUPgKM+351psE2tJs//jGHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: VeriSign Trust Network -OU: (c) 1999 VeriSign, Inc. - For authorized use only -CN: VeriSign Class 3 Public Primary Certification Authority - G3 ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b -N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t -KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu -kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm -CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ -Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu -imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te -2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe -DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p -F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt -TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: VeriSign Trust Network -OU: (c) 1999 VeriSign, Inc. - For authorized use only -CN: VeriSign Class 4 Public Primary Certification Authority - G3 ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 -GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ -+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd -U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm -NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY -ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ -ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 -CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq -g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm -fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c -2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ -bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: VeriSign Trust Network -OU: (c) 2006 VeriSign, Inc. - For authorized use only -CN: VeriSign Class 3 Public Primary Certification Authority - G5 ------BEGIN CERTIFICATE----- -MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB -yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL -ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp -U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW -ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW -ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp -U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y -aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 -nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex -t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz -SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG -BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ -rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ -NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E -BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH -BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy -aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv -MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE -p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y -5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK -WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ -4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N -hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: VeriSign Trust Network -OU: (c) 2007 VeriSign, Inc. - For authorized use only -CN: VeriSign Class 3 Public Primary Certification Authority - G4 ------BEGIN CERTIFICATE----- -MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW -ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp -U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y -aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp -U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg -SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln -biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm -GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve -fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ -aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj -aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW -kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC -4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga -FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== ------END CERTIFICATE----- - -================================================================ -C: US -O: VeriSign, Inc. -OU: VeriSign Trust Network -OU: (c) 2008 VeriSign, Inc. - For authorized use only -CN: VeriSign Universal Root Certification Authority ------BEGIN CERTIFICATE----- -MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB -vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL -ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp -U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W -ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX -MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 -IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y -IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh -bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF -9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH -H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H -LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN -/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT -rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw -WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs -exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud -DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 -sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ -seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz -4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ -BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR -lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 -7M2CYfE45k+XmCpajQ== ------END CERTIFICATE----- - -================================================================ -C: US -O: Wells Fargo -OU: Wells Fargo Certification Authority -CN: Wells Fargo Root Certificate Authority ------BEGIN CERTIFICATE----- -MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9v -dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDAxMDExMTY0MTI4WhcNMjEwMTE0 -MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dlbGxzIEZhcmdvMSww -KgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEvMC0G -A1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n13 -5zHCLielTWi5MbqNQ1mXx3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHE -SxP9cMIlrCL1dQu3U+SlK93OvRw6esP3E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4O -JgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5OEL8pahbSCOz6+MlsoCu -ltQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4jsNtlAHCE -AQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMB -AAGjYTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcB -CzAyMDAGCCsGAQUFBwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRw -b2xpY3kwDQYJKoZIhvcNAQEFBQADggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo -7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrvm+0fazbuSCUlFLZWohDo7qd/ -0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0ROhPs7fpvcmR7 -nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx -x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ -33ZwmVxwQ023tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s= ------END CERTIFICATE----- - -================================================================ -C: US -O: Wells Fargo WellsSecure -OU: Wells Fargo Bank NA -CN: WellsSecure Public Root Certificate Authority ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMx -IDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxs -cyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9v -dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcxMjEzMTcwNzU0WhcNMjIxMjE0 -MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdl -bGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQD -DC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+r -WxxTkqxtnt3CxC5FlAM1iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjU -Dk/41itMpBb570OYj7OeUt9tkTmPOL13i0Nj67eT/DBMHAGTthP796EfvyXhdDcs -HqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8bJVhHlfXBIEyg1J55oNj -z7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiBK0HmOFaf -SZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/Slwxl -AgMBAAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqG -KGh0dHA6Ly9jcmwucGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0P -AQH/BAQDAgHGMB0GA1UdDgQWBBQmlRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0j -BIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGBi6SBiDCBhTELMAkGA1UEBhMC -VVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNX -ZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg -Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEB -ALkVsUSRzCPIK0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd -/ZDJPHV3V3p9+N701NX3leZ0bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pB -A4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSljqHyita04pO2t/caaH/+Xc/77szWn -k4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+esE2fDbbFwRnzVlhE9 -iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJtylv -2G0xffX8oRAHh84vWdw+WNs= ------END CERTIFICATE----- - -================================================================ -C: US -O: thawte, Inc. -OU: (c) 2007 thawte, Inc. - For authorized use only -CN: thawte Primary Root CA - G2 ------BEGIN CERTIFICATE----- -MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp -IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi -BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw -MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh -d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig -YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v -dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ -BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 -papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K -DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 -KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox -XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== ------END CERTIFICATE----- - -================================================================ -C: US -O: thawte, Inc. -OU: Certification Services Division -OU: (c) 2006 thawte, Inc. - For authorized use only -CN: thawte Primary Root CA ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB -qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf -Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw -MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV -BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw -NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j -LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG -A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs -W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta -3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk -6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 -Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J -NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP -r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU -DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz -YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX -xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 -/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ -LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 -jVaMaA== ------END CERTIFICATE----- - -================================================================ -C: US -O: thawte, Inc. -OU: Certification Services Division -OU: (c) 2008 thawte, Inc. - For authorized use only -CN: thawte Primary Root CA - G3 ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB -rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf -Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw -MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV -BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa -Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl -LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u -MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl -ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm -gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 -YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf -b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 -9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S -zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk -OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV -HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA -2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW -oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu -t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c -KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM -m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu -MdRAGmI0Nj81Aa6sY6A= ------END CERTIFICATE----- - -================================================================ -C: US -OU: www.xrampsecurity.com -O: XRamp Security Services Inc -CN: XRamp Global Certification Authority ------BEGIN CERTIFICATE----- -MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB -gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk -MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY -UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx -NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 -dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy -dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 -38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP -KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q -DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 -qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa -JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi -PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P -BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs -jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 -eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD -ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR -vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt -qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa -IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy -i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ -O+7ETPTsJ3xCwnR8gooJybQDJbw= ------END CERTIFICATE----- - -================================================================ -C: US -ST: Arizona -L: Scottsdale -O: GoDaddy.com, Inc. -CN: Go Daddy Root Certificate Authority - G2 ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT -EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp -ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz -NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH -EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE -AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD -E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH -/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy -DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh -GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR -tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA -AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE -FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX -WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu -9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr -gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo -2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO -LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI -4uJEvlz36hz1 ------END CERTIFICATE----- - -================================================================ -C: US -ST: Arizona -L: Scottsdale -O: Starfield Technologies, Inc. -CN: Starfield Root Certificate Authority - G2 ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT -HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs -ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw -MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 -b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj -aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp -Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg -nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 -HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N -Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN -dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 -HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G -CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU -sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 -4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg -8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K -pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 -mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 ------END CERTIFICATE----- - -================================================================ -C: US -ST: Arizona -L: Scottsdale -O: Starfield Technologies, Inc. -CN: Starfield Services Root Certificate Authority - G2 ------BEGIN CERTIFICATE----- -MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT -HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs -ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 -MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD -VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy -ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy -dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p -OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 -8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K -Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe -hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk -6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw -DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q -AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI -bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB -ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z -qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd -iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn -0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN -sSi6 ------END CERTIFICATE----- - -================================================================ -C: US -ST: Indiana -L: Indianapolis -O: Software in the Public Interest -OU: hostmaster -CN: Certificate Authority -emailAddress: hostmaster@spi-inc.org ------BEGIN CERTIFICATE----- -MIIIDjCCBfagAwIBAgIJAOiOtsn4KhQoMA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD -VQQGEwJVUzEQMA4GA1UECBMHSW5kaWFuYTEVMBMGA1UEBxMMSW5kaWFuYXBvbGlz -MSgwJgYDVQQKEx9Tb2Z0d2FyZSBpbiB0aGUgUHVibGljIEludGVyZXN0MRMwEQYD -VQQLEwpob3N0bWFzdGVyMR4wHAYDVQQDExVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkx -JTAjBgkqhkiG9w0BCQEWFmhvc3RtYXN0ZXJAc3BpLWluYy5vcmcwHhcNMDgwNTEz -MDgwNzU2WhcNMTgwNTExMDgwNzU2WjCBvDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT -B0luZGlhbmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UEChMfU29mdHdh -cmUgaW4gdGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9zdG1hc3RlcjEe -MBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSUwIwYJKoZIhvcNAQkBFhZo -b3N0bWFzdGVyQHNwaS1pbmMub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC -CgKCAgEA3DbmR0LCxFF1KYdAw9iOIQbSGE7r7yC9kDyFEBOMKVuUY/b0LfEGQpG5 -GcRCaQi/izZF6igFM0lIoCdDkzWKQdh4s/Dvs24t3dHLfer0dSbTPpA67tfnLAS1 -fOH1fMVO73e9XKKTM5LOfYFIz2u1IiwIg/3T1c87Lf21SZBb9q1NE8re06adU1Fx -Y0b4ShZcmO4tbZoWoXaQ4mBDmdaJ1mwuepiyCwMs43pPx93jzONKao15Uvr0wa8u -jyoIyxspgpJyQ7zOiKmqp4pRQ1WFmjcDeJPI8L20QcgHQprLNZd6ioFl3h1UCAHx -ZFy3FxpRvB7DWYd2GBaY7r/2Z4GLBjXFS21ZGcfSxki+bhQog0oQnBv1b7ypjvVp -/rLBVcznFMn5WxRTUQfqzj3kTygfPGEJ1zPSbqdu1McTCW9rXRTunYkbpWry9vjQ -co7qch8vNGopCsUK7BxAhRL3pqXTT63AhYxMfHMgzFMY8bJYTAH1v+pk1Vw5xc5s -zFNaVrpBDyXfa1C2x4qgvQLCxTtVpbJkIoRRKFauMe5e+wsWTUYFkYBE7axt8Feo -+uthSKDLG7Mfjs3FIXcDhB78rKNDCGOM7fkn77SwXWfWT+3Qiz5dW8mRvZYChD3F -TbxCP3T9PF2sXEg2XocxLxhsxGjuoYvJWdAY4wCAs1QnLpnwFVMCAwEAAaOCAg8w -ggILMB0GA1UdDgQWBBQ0cdE41xU2g0dr1zdkQjuOjVKdqzCB8QYDVR0jBIHpMIHm -gBQ0cdE41xU2g0dr1zdkQjuOjVKdq6GBwqSBvzCBvDELMAkGA1UEBhMCVVMxEDAO -BgNVBAgTB0luZGlhbmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UEChMf -U29mdHdhcmUgaW4gdGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9zdG1h -c3RlcjEeMBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSUwIwYJKoZIhvcN -AQkBFhZob3N0bWFzdGVyQHNwaS1pbmMub3JnggkA6I62yfgqFCgwDwYDVR0TAQH/ -BAUwAwEB/zARBglghkgBhvhCAQEEBAMCAAcwCQYDVR0SBAIwADAuBglghkgBhvhC -AQ0EIRYfU29mdHdhcmUgaW4gdGhlIFB1YmxpYyBJbnRlcmVzdDAwBglghkgBhvhC -AQQEIxYhaHR0cHM6Ly9jYS5zcGktaW5jLm9yZy9jYS1jcmwucGVtMDIGCWCGSAGG -+EIBAwQlFiNodHRwczovL2NhLnNwaS1pbmMub3JnL2NlcnQtY3JsLnBlbTAhBgNV -HREEGjAYgRZob3N0bWFzdGVyQHNwaS1pbmMub3JnMA4GA1UdDwEB/wQEAwIBBjAN -BgkqhkiG9w0BAQUFAAOCAgEAtM294LnqsgMrfjLp3nI/yUuCXp3ir1UJogxU6M8Y -PCggHam7AwIvUjki+RfPrWeQswN/2BXja367m1YBrzXU2rnHZxeb1NUON7MgQS4M -AcRb+WU+wmHo0vBqlXDDxm/VNaSsWXLhid+hoJ0kvSl56WEq2dMeyUakCHhBknIP -qxR17QnwovBc78MKYiC3wihmrkwvLo9FYyaW8O4x5otVm6o6+YI5HYg84gd1GuEP -sTC8cTLSOv76oYnzQyzWcsR5pxVIBcDYLXIC48s9Fmq6ybgREOJJhcyWR2AFJS7v -dVkz9UcZFu/abF8HyKZQth3LZjQl/GaD68W2MEH4RkRiqMEMVObqTFoo5q7Gt/5/ -O5aoLu7HaD7dAD0prypjq1/uSSotxdz70cbT0ZdWUoa2lOvUYFG3/B6bzAKb1B+P -+UqPti4oOxfMxaYF49LTtcYDyeFIQpvLP+QX4P4NAZUJurgNceQJcHdC2E3hQqlg -g9cXiUPS1N2nGLar1CQlh7XU4vwuImm9rWgs/3K1mKoGnOcqarihk3bOsPN/nOHg -T7jYhkalMwIsJWE3KpLIrIF0aGOHM3a9BX9e1dUCbb2v/ypaqknsmHlHU5H2DjRa -yaXG67Ljxay2oHA1u8hRadDytaIybrw/oDc5fHE2pgXfDBLkFqfF1stjo5VwP+YE -o2A= ------END CERTIFICATE----- - -================================================================ -C: US -ST: UT -L: Salt Lake City -O: The USERTRUST Network -OU: http://www.usertrust.com -CN: UTN - DATACorp SGC ------BEGIN CERTIFICATE----- -MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB -kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw -IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG -EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD -VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu -dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 -E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ -D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK -4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq -lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW -bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB -o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT -MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js -LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr -BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB -AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft -Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj -j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH -KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv -2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 -mfnGV/TJVTl4uix5yaaIK/QI ------END CERTIFICATE----- - -================================================================ -C: US -ST: UT -L: Salt Lake City -O: The USERTRUST Network -OU: http://www.usertrust.com -CN: UTN-USERFirst-Client Authentication and Email ------BEGIN CERTIFICATE----- -MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCB -rjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0BgNVBAMTLVVUTi1VU0VSRmlyc3Qt -Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05OTA3MDkxNzI4NTBa -Fw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAV -BgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5l -dHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UE -AxMtVVROLVVTRVJGaXJzdC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWls -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3B -YHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIxB8dOtINknS4p1aJkxIW9 -hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8om+rWV6l -L8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLm -SGHGTPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM -1tZUOt4KpLoDd7NlyP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws -6wIDAQABo4G5MIG2MAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud -DgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNVHR8EUTBPME2gS6BJhkdodHRw -Oi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGllbnRBdXRoZW50 -aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH -AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u -7mFVbwQ+zznexRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0 -xtcgBEXkzYABurorbs6q15L+5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQ -rfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarVNZ1yQAOJujEdxRBoUp7fooXFXAim -eOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZw7JHpsIyYdfHb0gk -USeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ= ------END CERTIFICATE----- - -================================================================ -C: US -ST: UT -L: Salt Lake City -O: The USERTRUST Network -OU: http://www.usertrust.com -CN: UTN-USERFirst-Hardware ------BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- - -================================================================ -C: ZA -ST: Western Cape -L: Cape Town -O: Thawte Consulting cc -OU: Certification Services Division -CN: Thawte Premium Server CA -emailAddress: premium-server@thawte.com ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- - -================================================================ -C: ZA -ST: Western Cape -L: Cape Town -O: Thawte Consulting cc -OU: Certification Services Division -CN: Thawte Server CA -emailAddress: server-certs@thawte.com ------BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm -MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx -MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 -dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl -cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 -DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 -yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX -L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj -EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG -7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e -QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ -qdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- - -================================================================ -C: ch -O: Swisscom -OU: Digital Certificate Services -CN: Swisscom Root CA 1 ------BEGIN CERTIFICATE----- -MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBk -MQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0 -YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3Qg -Q0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4MTgyMjA2MjBaMGQxCzAJBgNVBAYT -AmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZp -Y2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9 -m2BtRsiMMW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdih -FvkcxC7mlSpnzNApbjyFNDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/ -TilftKaNXXsLmREDA/7n29uj/x2lzZAeAR81sH8A25Bvxn570e56eqeqDFdvpG3F -EzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkCb6dJtDZd0KTeByy2dbco -kdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn7uHbHaBu -HYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNF -vJbNcA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo -19AOeCMgkckkKmUpWyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjC -L3UcPX7ape8eYIVpQtPM+GP+HkM5haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJW -bjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNYMUJDLXT5xp6mig/p/r+D5kNX -JLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0hBBYw -FDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j -BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzc -K6FptWfUjNP9MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzf -ky9NfEBWMXrrpA9gzXrzvsMnjgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7Ik -Vh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQMbFamIp1TpBcahQq4FJHgmDmHtqB -sfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4HVtA4oJVwIHaM190e -3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtlvrsR -ls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ip -mXeascClOS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HH -b6D0jqTsNFFbjCYDcKF31QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksf -rK/7DZBaZmBwXarNeNQk7shBoJMBkpxqnvy5JMWzFYJ+vq6VK+uxwNrjAWALXmms -hFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCyx/yP2FS1k2Kdzs9Z+z0Y -zirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMWNY6E0F/6 -MBr1mmz0DlP5OlvRHA== ------END CERTIFICATE----- - -================================================================ -C: ch -O: Swisscom -OU: Digital Certificate Services -CN: Swisscom Root CA 2 ------BEGIN CERTIFICATE----- -MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBk -MQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0 -YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3Qg -Q0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2MjUwNzM4MTRaMGQxCzAJBgNVBAYT -AmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZp -Y2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvEr -jw0DzpPMLgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r -0rk0X2s682Q2zsKwzxNoysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f -2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJwDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVP -ACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpHWrumnf2U5NGKpV+GY3aF -y6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1aSgJA/MTA -tukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL -6yxSNLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0 -uPoTXGiTOmekl9AbmbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrAL -acywlKinh/LTSlDcX3KwFnUey7QYYpqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velh -k6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3qPyZ7iVNTA6z00yPhOgpD/0Q -VAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0hBBYw -FDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O -BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqh -b97iEoHF8TwuMA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4R -fbgZPnm3qKhyN2abGu2sEzsOv2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv -/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ82YqZh6NM4OKb3xuqFp1mrjX2lhI -REeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLzo9v/tdhZsnPdTSpx -srpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcsa0vv -aGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciAT -woCqISxxOQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99n -Bjx8Oto0QuFmtEYE3saWmA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5W -t6NlUe07qxS/TFED6F+KBZvuim6c779o+sjaC+NCydAXFJy3SuCvkychVSa1ZC+N -8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TCrvJcwhbtkj6EPnNgiLx2 -9CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX5OfNeOI5 -wSsSnqaeG8XmDtkx2Q== ------END CERTIFICATE----- - -================================================================ -C: ch -O: Swisscom -OU: Digital Certificate Services -CN: Swisscom Root EV CA 2 ------BEGIN CERTIFICATE----- -MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAw -ZzELMAkGA1UEBhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdp -dGFsIENlcnRpZmljYXRlIFNlcnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290 -IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcNMzEwNjI1MDg0NTA4WjBnMQswCQYD -VQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2Vy -dGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYgQ0Eg -MjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7Bx -UglgRCgzo3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD -1ycfMQ4jFrclyxy0uYAyXhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPH -oCE2G3pXKSinLr9xJZDzRINpUKTk4RtiGZQJo/PDvO/0vezbE53PnUgJUmfANykR -HvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8LiqG12W0OfvrSdsyaGOx9/ -5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaHZa0zKcQv -idm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHL -OdAGalNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaC -NYGu+HuB5ur+rPQam3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f -46Fq9mDU5zXNysRojddxyNMkM3OxbPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCB -UWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDixzgHcgplwLa7JSnaFp6LNYth -7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/BAQDAgGGMB0G -A1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED -MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWB -bj2ITY1x0kbBbkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6x -XCX5145v9Ydkn+0UjrgEjihLj6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98T -PLr+flaYC/NUn81ETm484T4VvwYmneTwkLbUwp4wLh/vx3rEUMfqe9pQy3omywC0 -Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7XwgiG/W9mR4U9s70 -WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH59yL -Gn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm -7JFe3VE/23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4S -nr8PyQUQ3nqjsTzyP6WqJ3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VN -vBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyAHmBR3NdUIR7KYndP+tiPsys6DXhyyWhB -WkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/giuMod89a2GQ+fYWVq6nTI -fI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuWl8PVP3wb -I+2ksx0WckNLIOFZfsLorSa/ovc= ------END CERTIFICATE----- - -================================================================ -CN: ACEDICOM Root -OU: PKI -O: EDICOM -C: ES ------BEGIN CERTIFICATE----- -MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE -AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x -CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW -MBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZF -RElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC -AgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHkWLn7 -09gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7 -XBZXehuDYAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5P -Grjm6gSSrj0RuVFCPYewMYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAK -t0SdE3QrwqXrIhWYENiLxQSfHY9g5QYbm8+5eaA9oiM/Qj9r+hwDezCNzmzAv+Yb -X79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbkHQl/Sog4P75n/TSW9R28 -MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTTxKJxqvQU -fecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI -2Sf23EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyH -K9caUPgn6C9D4zq92Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEae -ZAwUswdbxcJzbPEHXEUkFDWug/FqTYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAP -BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz4SsrSbbXc6GqlPUB53NlTKxQ -MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU9QHnc2VMrFAw -RAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv -bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWIm -fQwng4/F9tqgaHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3 -gvoFNTPhNahXwOf9jU8/kzJPeGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKe -I6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1PwkzQSulgUV1qzOMPPKC8W64iLgpq0i -5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1ThCojz2GuHURwCRi -ipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oIKiMn -MCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZ -o5NjEFIqnxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6 -zqylfDJKZ0DcMDQj3dcEI2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacN -GHk0vFQYXlPKNFHtRQrmjseCNj6nOGOpMCwXEGCSn1WHElkQwg9naRHMTh5+Spqt -r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK -Z05phkOTOPu220+DkdRgfks+KzgHVZhepA== ------END CERTIFICATE----- - -================================================================ -CN: ComSign CA -O: ComSign -C: IL ------BEGIN CERTIFICATE----- -MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0 -MRMwEQYDVQQDEwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQG -EwJJTDAeFw0wNDAzMjQxMTMyMThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMT -CkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNpZ24xCzAJBgNVBAYTAklMMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49qROR+WCf4C9DklBKK -8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTyP2Q2 -98CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb -2CEJKHxNGGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxC -ejVb7Us6eva1jsz/D3zkYDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7Kpi -Xd3DTKaCQeQzC6zJMw9kglcq/QytNuEMrkvF7zuZ2SOzW120V+x0cAwqTwIDAQAB -o4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAyoDCgLoYsaHR0cDovL2Zl -ZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0PAQH/BAQD -AgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRL -AZs+VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWd -foPPbrxHbvUanlR2QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0M -cXS6hMTXcpuEfDhOZAYnKuGntewImbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq -8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb/627HOkthIDYIb6FUtnUdLlp -hbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VGzT2ouvDzuFYk -Res3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U -AGegcQCCSA== ------END CERTIFICATE----- - -================================================================ -CN: ComSign Secured CA -O: ComSign -C: IL ------BEGIN CERTIFICATE----- -MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAw -PDEbMBkGA1UEAxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWdu -MQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwx -GzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBDQTEQMA4GA1UEChMHQ29tU2lnbjEL -MAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGtWhf -HZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs49oh -gHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sW -v+bznkqH7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ue -Mv5WJDmyVIRD9YTC2LxBkMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr -9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d19guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt -6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUwAwEB/zBEBgNVHR8EPTA7 -MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29tU2lnblNl -Y3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58 -ADsAj8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkq -hkiG9w0BAQUFAAOCAQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7p -iL1DRYHjZiM/EoZNGeQFsOY3wo3aBijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtC -dsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtpFhpFfTMDZflScZAmlaxMDPWL -kz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP51qJThRv4zdL -hfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz -OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== ------END CERTIFICATE----- - -================================================================ -CN: EBG Elektronik Sertifika Hizmet Sağlayıcısı -O: EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. -C: TR ------BEGIN CERTIFICATE----- -MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNV -BAMML0VCRyBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMTcwNQYDVQQKDC5FQkcgQmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXpt -ZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAeFw0wNjA4MTcwMDIxMDlaFw0xNjA4 -MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25payBTZXJ0aWZpa2Eg -SGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2ltIFRl -a25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h -4fuXd7hxlugTlkaDT7byX3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAk -tiHq6yOU/im/+4mRDGSaBUorzAzu8T2bgmmkTPiab+ci2hC6X5L8GCcKqKpE+i4s -tPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfreYteIAbTdgtsApWjluTL -dlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZTqNGFav4 -c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8Um -TDGyY5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z -+kI2sSXFCjEmN1ZnuqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0O -Lna9XvNRiYuoP1Vzv9s6xiQFlpJIqkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMW -OeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vmExH8nYQKE3vwO9D8owrXieqW -fo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0Nokb+Clsi7n2 -l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB -/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgw -FoAU587GT/wWZ5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+ -8ygjdsZs93/mQJ7ANtyVDR2tFcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI -6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgmzJNSroIBk5DKd8pNSe/iWtkqvTDO -TLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64kXPBfrAowzIpAoHME -wfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqTbCmY -Iai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJn -xk1Gj7sURT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4Q -DgZxGhBM/nV+/x5XOULK1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9q -Kd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11t -hie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQY9iJSrSq3RZj9W6+YKH4 -7ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9AahH3eU7 -QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT ------END CERTIFICATE----- - -================================================================ -CN: TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı -C: TR -L: ANKARA -O: (c) 2005 TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. ------BEGIN CERTIFICATE----- -MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGDAJUUjEPMA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykg -MjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8 -dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMxMDI3MTdaFw0xNTAz -MjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2Vy -dGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYD -VQQHDAZBTktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kg -xLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEu -xZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7 -XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GXyGl8hMW0kWxsE2qkVa2k -heiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8iSi9BB35J -YbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5C -urKZ8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1 -JuTm5Rh8i27fbMx4W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51 -b0dewQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV -9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46sWrv7/hg0Uw2ZkUd82YCdAR7 -kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxEq8Sn5RTOPEFh -fEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy -B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdA -aLX/7KfS0zgYnNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKS -RGQDJereW26fyfJOrN3H ------END CERTIFICATE----- - -================================================================ -CN: TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı -C: TR -L: Ankara -O: TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Aralık 2007 ------BEGIN CERTIFICATE----- -MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xS -S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg -SGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4XDTA3MTIyNTE4Mzcx -OVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxla3Ry -b25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMC -VFIxDzANBgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDE -sGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7F -ni4gKGMpIEFyYWzEsWsgMjAwNzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9NYvDdE3ePYakqtdTyuTFY -KTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQvKUmi8wUG -+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveG -HtyaKhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6P -IzdezKKqdfcYbwnTrqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M -733WB2+Y8a+xwXrXgTW4qhe04MsCAwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHk -Yb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/sPx+EnWVUXKgW -AkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I -aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5 -mxRZNTZPz/OOXl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsa -XRik7r4EW5nVcV9VZWRi1aKbBFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZ -qxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAKpoRq0Tl9 ------END CERTIFICATE----- - -================================================================ -CN: TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı -C: TR -L: Ankara -O: TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005 ------BEGIN CERTIFICATE----- -MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xS -S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg -SGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcNMDUxMTA3MTAwNzU3 -WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVrdHJv -bmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJU -UjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSw -bGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWe -LiAoYykgS2FzxLFtIDIwMDUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqeLCDe2JAOCtFp0if7qnef -J1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKIx+XlZEdh -R3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJ -Qv2gQrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGX -JHpsmxcPbe9TmJEr5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1p -zpwACPI2/z7woQ8arBT9pmAPAgMBAAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58S -Fq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/nttRbj2hWyfIvwq -ECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 -Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFz -gw2lGh1uEpJ+hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotH -uFEJjOp9zYhys2AzsfAKRO8P9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LS -y3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5UrbnBEI= ------END CERTIFICATE----- - -================================================================ -L: ValiCert Validation Network -O: ValiCert, Inc. -OU: ValiCert Class 1 Policy Validation Authority -CN: http://www.valicert.com/ -emailAddress: info@valicert.com ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy -NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y -LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ -TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y -TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 -LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW -I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw -nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI ------END CERTIFICATE----- - -================================================================ -L: ValiCert Validation Network -O: ValiCert, Inc. -OU: ValiCert Class 2 Policy Validation Authority -CN: http://www.valicert.com/ -emailAddress: info@valicert.com ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- - -================================================================ -L: ValiCert Validation Network -O: ValiCert, Inc. -OU: ValiCert Class 3 Policy Validation Authority -CN: http://www.valicert.com/ -emailAddress: info@valicert.com ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy -NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD -cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs -2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY -JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE -Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ -n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A -PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu ------END CERTIFICATE----- - -================================================================ -O: Cybertrust, Inc -CN: Cybertrust Global Root ------BEGIN CERTIFICATE----- -MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG -A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh -bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE -ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS -b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 -7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS -J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y -HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP -t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz -FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY -XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ -MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw -hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js -MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA -A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj -Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx -XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o -omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc -A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW -WL1WMRJOEcgh4LMRkWXbtKaIOM5V ------END CERTIFICATE----- - -================================================================ -O: Digital Signature Trust Co. -CN: DST Root CA X3 ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ -MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT -DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow -PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD -Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O -rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq -OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b -xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw -7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD -aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG -SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 -ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr -AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz -R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 -JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo -Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ ------END CERTIFICATE----- - -================================================================ -O: Entrust.net -OU: www.entrust.net/CPS_2048 incorp. by ref. (limits liab.) -OU: (c) 1999 Entrust.net Limited -CN: Entrust.net Certification Authority (2048) ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 -MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq -K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe -sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX -MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT -XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ -HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV -HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub -j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo -U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf -zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b -u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ -bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er -fF6adulZkMV8gzURZVE= ------END CERTIFICATE----- - -================================================================ -O: RSA Security Inc -OU: RSA Security 2048 V3 ------BEGIN CERTIFICATE----- -MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6 -MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJp -dHkgMjA0OCBWMzAeFw0wMTAyMjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAX -BgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJTQSBTZWN1cml0eSAy -MDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt49VcdKA3Xtp -eafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7Jylg -/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGl -wSMiuLgbWhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnh -AMFRD0xS+ARaqn1y07iHKrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2 -PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpu -AWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4EFgQUB8NR -MKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYc -HnmYv/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/ -Zb5gEydxiKRz44Rj0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+ -f00/FGj1EVDVwfSQpQgdMWD/YIwjVAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVO -rSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395nzIlQnQFgCi/vcEkllgVsRch -6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kApKnXwiJPZ9d3 -7CAFYd4= ------END CERTIFICATE----- - -================================================================ -OU: GlobalSign Root CA - R2 -O: GlobalSign -CN: GlobalSign ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 -MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL -v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 -eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq -tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd -C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa -zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB -mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH -V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n -bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG -3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs -J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO -291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS -ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd -AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE----- - -================================================================ -OU: GlobalSign Root CA - R3 -O: GlobalSign -CN: GlobalSign ------BEGIN CERTIFICATE----- -MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 -MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 -RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT -gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm -KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd -QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ -XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw -DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o -LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU -RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp -jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK -6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX -mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs -Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH -WD9f ------END CERTIFICATE----- - -================================================================ -emailAddress: contacto@procert.net.ve -L: Chacao -ST: Miranda -OU: Proveedor de Certificados PROCERT -O: Sistema Nacional de Certificacion Electronica -C: VE -CN: PSCProcert ------BEGIN CERTIFICATE----- -MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1 -dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9s -YW5vMQswCQYDVQQGEwJWRTEQMA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlz -dHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0 -aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBlcmludGVuZGVuY2lh -IGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUwIwYJ -KoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEw -MFoXDTIwMTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHBy -b2NlcnQubmV0LnZlMQ8wDQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGEx -KjAoBgNVBAsTIVByb3ZlZWRvciBkZSBDZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQG -A1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9u -aWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo9 -7BVCwfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74 -BCXfgI8Qhd19L3uA3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38G -ieU89RLAu9MLmV+QfI4tL3czkkohRqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9 -JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmOEO8GqQKJ/+MMbpfg353bIdD0 -PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG20qCZyFSTXai2 -0b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH -0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/ -6mnbVSKVUyqUtd+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1m -v6JpIzi4mWCZDlZTOpx+FIywBm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7 -K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvpr2uKGcfLFFb14dq12fy/czja+eev -bqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/AgEBMDcGA1UdEgQw -MC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAzNi0w -MB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFD -gBStuyIdxuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0 -b3JpZGFkIGRlIENlcnRpZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xh -bm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQHEwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0 -cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5hY2lvbmFsIGRlIENlcnRp -ZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5kZW5jaWEg -ZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkq -hkiG9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQD -AgEGME0GA1UdEQRGMESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0w -MDAwMDKgGwYFYIZeAgKgEgwQUklGLUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEag -RKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9sY3IvQ0VSVElGSUNBRE8t -UkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNyYWl6LnN1c2Nl -cnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v -Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsG -AQUFBwIBFh5odHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcN -AQELBQADggIBACtZ6yKZu4SqT96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS -1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmNg7+mvTV+LFwxNG9s2/NkAZiqlCxB -3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4quxtxj7mkoP3Yldmv -Wb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1n8Gh -HVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHm -pHmJWhSnFFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXz -sOfIt+FTvZLm8wyWuevo5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bE -qCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq3TNWOByyrYDT13K9mmyZY+gAu0F2Bbdb -mRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5poLWccret9W6aAjtmcz9 -opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3YeMLEYC/H -YvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km ------END CERTIFICATE----- - -================================================================ -emailAddress: pki@sk.ee -C: EE -O: AS Sertifitseerimiskeskus -CN: Juur-SK ------BEGIN CERTIFICATE----- -MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcN -AQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZp -dHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMw -MVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQsw -CQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEQ -MA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOB -SvZiF3tfTQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkz -ABpTpyHhOEvWgxutr2TC+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvH -LCu3GFH+4Hv2qEivbDtPL+/40UceJlfwUR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMP -PbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDaTpxt4brNj3pssAki14sL -2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQFMAMBAf8w -ggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwIC -MIHDHoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDk -AGwAagBhAHMAdABhAHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0 -AHMAZQBlAHIAaQBtAGkAcwBrAGUAcwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABz -AGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABrAGkAbgBuAGkAdABhAG0AaQBz -AGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nwcy8wKwYDVR0f -BCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE -FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcY -P2/v6X2+MA4GA1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOi -CfP+JmeaUOTDBS8rNXiRTHyoERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+g -kcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyLabVAyJRld/JXIWY7zoVAtjNjGr95 -HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678IIbsSt4beDI3poHS -na9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkhMp6q -qIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0Z -TbvGRNs2yyqcjg== ------END CERTIFICATE----- diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -91,9 +91,6 @@ 'rsrc/css/application/pholio/pholio-edit.css' => '4df55b3b', 'rsrc/css/application/pholio/pholio-inline-comments.css' => '722b48c2', 'rsrc/css/application/pholio/pholio.css' => '88ef5ef1', - 'rsrc/css/application/phortune/phortune-credit-card-form.css' => '3b9868a8', - 'rsrc/css/application/phortune/phortune-invoice.css' => '4436b241', - 'rsrc/css/application/phortune/phortune.css' => '508a1a5e', 'rsrc/css/application/phrequent/phrequent.css' => 'bd79cc67', 'rsrc/css/application/phriction/phriction-document-css.css' => '03380da0', 'rsrc/css/application/policy/policy-edit.css' => '8794e2ed', @@ -413,9 +410,6 @@ 'rsrc/js/application/passphrase/passphrase-credential-control.js' => '48fe33d0', 'rsrc/js/application/pholio/behavior-pholio-mock-edit.js' => '3eed1f2b', 'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => '5aa1544e', - 'rsrc/js/application/phortune/behavior-stripe-payment-form.js' => '02cb4398', - 'rsrc/js/application/phortune/behavior-test-payment-form.js' => '4a7fb02b', - 'rsrc/js/application/phortune/phortune-credit-card-form.js' => 'd12d214f', 'rsrc/js/application/policy/behavior-policy-control.js' => '0eaa33a9', 'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '9347f172', 'rsrc/js/application/projects/WorkboardBoard.js' => 'b46d88c5', @@ -690,8 +684,6 @@ 'javelin-behavior-select-content' => 'e8240b50', 'javelin-behavior-select-on-click' => '66365ee2', 'javelin-behavior-setup-check-https' => '01384686', - 'javelin-behavior-stripe-payment-form' => '02cb4398', - 'javelin-behavior-test-payment-form' => '4a7fb02b', 'javelin-behavior-time-typeahead' => '5803b9e7', 'javelin-behavior-toggle-class' => '32db8374', 'javelin-behavior-toggle-widget' => '8f959ad0', @@ -814,10 +806,6 @@ 'pholio-css' => '88ef5ef1', 'pholio-edit-css' => '4df55b3b', 'pholio-inline-comments-css' => '722b48c2', - 'phortune-credit-card-form' => 'd12d214f', - 'phortune-credit-card-form-css' => '3b9868a8', - 'phortune-css' => '508a1a5e', - 'phortune-invoice-css' => '4436b241', 'phrequent-css' => 'bd79cc67', 'phriction-document-css' => '03380da0', 'phui-action-panel-css' => '6c386cbf', @@ -942,11 +930,6 @@ 'javelin-leader', 'javelin-json', ), - '02cb4398' => array( - 'javelin-behavior', - 'javelin-dom', - 'phortune-credit-card-form', - ), '030b4f7a' => array( 'javelin-stratcom', 'javelin-install', @@ -1352,11 +1335,6 @@ '490e2e2e' => array( 'phui-oi-list-view-css', ), - '4a7fb02b' => array( - 'javelin-behavior', - 'javelin-dom', - 'phortune-credit-card-form', - ), '4ae58b5a' => array( 'javelin-behavior', 'javelin-dom', @@ -2068,13 +2046,6 @@ 'javelin-dom', 'javelin-stratcom', ), - 'd12d214f' => array( - 'javelin-install', - 'javelin-dom', - 'javelin-json', - 'javelin-workflow', - 'javelin-util', - ), 'd3799cb4' => array( 'javelin-install', ), diff --git a/resources/sql/autopatches/20140721.phortune.1.cart.sql b/resources/sql/autopatches/20140721.phortune.1.cart.sql --- a/resources/sql/autopatches/20140721.phortune.1.cart.sql +++ b/resources/sql/autopatches/20140721.phortune.1.cart.sql @@ -1,11 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_cart ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - accountPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - metadata LONGTEXT NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid), - KEY `key_account` (accountPHID) -) ENGINE=InnoDB, COLLATE utf8_general_ci; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20140721.phortune.2.purchase.sql b/resources/sql/autopatches/20140721.phortune.2.purchase.sql --- a/resources/sql/autopatches/20140721.phortune.2.purchase.sql +++ b/resources/sql/autopatches/20140721.phortune.2.purchase.sql @@ -1,17 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_purchase ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - productPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - accountPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - cartPHID VARCHAR(64) COLLATE utf8_bin, - basePriceInCents INT NOT NULL, - quantity INT UNSIGNED NOT NULL, - totalPriceInCents INT NOT NULL, - status VARCHAR(32) NOT NULL COLLATE utf8_bin, - metadata LONGTEXT NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid), - KEY `key_cart` (cartPHID) -) ENGINE=InnoDB, COLLATE utf8_general_ci; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20140721.phortune.3.charge.sql b/resources/sql/autopatches/20140721.phortune.3.charge.sql --- a/resources/sql/autopatches/20140721.phortune.3.charge.sql +++ b/resources/sql/autopatches/20140721.phortune.3.charge.sql @@ -1,16 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_charge ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - accountPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - cartPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - paymentMethodPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - amountInCents INT NOT NULL, - status VARCHAR(32) NOT NULL COLLATE utf8_bin, - metadata LONGTEXT NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid), - KEY `key_cart` (cartPHID), - KEY `key_account` (accountPHID) -) ENGINE=InnoDB, COLLATE utf8_general_ci; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20140721.phortune.4.cartstatus.sql b/resources/sql/autopatches/20140721.phortune.4.cartstatus.sql --- a/resources/sql/autopatches/20140721.phortune.4.cartstatus.sql +++ b/resources/sql/autopatches/20140721.phortune.4.cartstatus.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_cart - ADD status VARCHAR(32) NOT NULL COLLATE utf8_bin; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20140721.phortune.5.cstatusdefault.sql b/resources/sql/autopatches/20140721.phortune.5.cstatusdefault.sql --- a/resources/sql/autopatches/20140721.phortune.5.cstatusdefault.sql +++ b/resources/sql/autopatches/20140721.phortune.5.cstatusdefault.sql @@ -1,2 +1 @@ -UPDATE {$NAMESPACE}_phortune.phortune_cart - SET status = 'cart:ready' WHERE status = ''; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20140721.phortune.6.onetimecharge.sql b/resources/sql/autopatches/20140721.phortune.6.onetimecharge.sql --- a/resources/sql/autopatches/20140721.phortune.6.onetimecharge.sql +++ b/resources/sql/autopatches/20140721.phortune.6.onetimecharge.sql @@ -1,3 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_charge - ADD paymentProviderKey VARCHAR(128) NOT NULL COLLATE utf8_bin - AFTER cartPHID; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20140721.phortune.7.nullmethod.sql b/resources/sql/autopatches/20140721.phortune.7.nullmethod.sql --- a/resources/sql/autopatches/20140721.phortune.7.nullmethod.sql +++ b/resources/sql/autopatches/20140721.phortune.7.nullmethod.sql @@ -1,4 +1 @@ -/* Make this nullable to support one-time providers. */ - -ALTER TABLE {$NAMESPACE}_phortune.phortune_charge - CHANGE paymentMethodPHID paymentMethodPHID VARCHAR(64) COLLATE utf8_bin; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20140722.appname.php b/resources/sql/autopatches/20140722.appname.php --- a/resources/sql/autopatches/20140722.appname.php +++ b/resources/sql/autopatches/20140722.appname.php @@ -39,7 +39,6 @@ 'Phame', 'Phlux', 'Pholio', - 'Phortune', 'PHPAST', 'Phragment', 'Phrequent', diff --git a/resources/sql/autopatches/20140911.fund.1.initiative.sql b/resources/sql/autopatches/20140911.fund.1.initiative.sql --- a/resources/sql/autopatches/20140911.fund.1.initiative.sql +++ b/resources/sql/autopatches/20140911.fund.1.initiative.sql @@ -1,15 +1 @@ -CREATE TABLE {$NAMESPACE}_fund.fund_initiative ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - name VARCHAR(255) NOT NULL, - ownerPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - description LONGTEXT NOT NULL, - viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, - editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, - status VARCHAR(32) NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid), - KEY `key_status` (status), - KEY `key_owner` (ownerPHID) -) ENGINE=InnoDB, COLLATE utf8_general_ci; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20140911.fund.2.xaction.sql b/resources/sql/autopatches/20140911.fund.2.xaction.sql --- a/resources/sql/autopatches/20140911.fund.2.xaction.sql +++ b/resources/sql/autopatches/20140911.fund.2.xaction.sql @@ -1,19 +1 @@ -CREATE TABLE {$NAMESPACE}_fund.fund_initiativetransaction ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) COLLATE utf8_bin NOT NULL, - authorPHID VARCHAR(64) COLLATE utf8_bin NOT NULL, - objectPHID VARCHAR(64) COLLATE utf8_bin NOT NULL, - viewPolicy VARCHAR(64) COLLATE utf8_bin NOT NULL, - editPolicy VARCHAR(64) COLLATE utf8_bin NOT NULL, - commentPHID VARCHAR(64) COLLATE utf8_bin DEFAULT NULL, - commentVersion INT UNSIGNED NOT NULL, - transactionType VARCHAR(32) COLLATE utf8_bin NOT NULL, - oldValue LONGTEXT COLLATE utf8_bin NOT NULL, - newValue LONGTEXT COLLATE utf8_bin NOT NULL, - contentSource LONGTEXT COLLATE utf8_bin NOT NULL, - metadata LONGTEXT COLLATE utf8_bin NOT NULL, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB, COLLATE utf8_general_ci; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20140911.fund.3.edge.sql b/resources/sql/autopatches/20140911.fund.3.edge.sql --- a/resources/sql/autopatches/20140911.fund.3.edge.sql +++ b/resources/sql/autopatches/20140911.fund.3.edge.sql @@ -1,15 +1 @@ -CREATE TABLE {$NAMESPACE}_fund.edge ( - src VARCHAR(64) NOT NULL COLLATE utf8_bin, - type VARCHAR(64) NOT NULL COLLATE utf8_bin, - dst VARCHAR(64) NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - seq INT UNSIGNED NOT NULL, - dataID INT UNSIGNED, - PRIMARY KEY (src, type, dst), - KEY (src, type, dateCreated, seq) -) ENGINE=InnoDB, COLLATE utf8_general_ci; - -CREATE TABLE {$NAMESPACE}_fund.edgedata ( - id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - data LONGTEXT NOT NULL COLLATE utf8_bin -) ENGINE=InnoDB, COLLATE utf8_general_ci; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20140911.fund.4.backer.sql b/resources/sql/autopatches/20140911.fund.4.backer.sql --- a/resources/sql/autopatches/20140911.fund.4.backer.sql +++ b/resources/sql/autopatches/20140911.fund.4.backer.sql @@ -1,14 +1 @@ -CREATE TABLE {$NAMESPACE}_fund.fund_backer ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - initiativePHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - backerPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - status VARCHAR(32) NOT NULL COLLATE utf8_bin, - amountInCents INT UNSIGNED NOT NULL, - properties LONGTEXT NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid), - KEY `key_initiative` (initiativePHID), - KEY `key_backer` (backerPHID) -) ENGINE=InnoDB, COLLATE utf8_general_ci; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20140911.fund.5.backxaction.sql b/resources/sql/autopatches/20140911.fund.5.backxaction.sql --- a/resources/sql/autopatches/20140911.fund.5.backxaction.sql +++ b/resources/sql/autopatches/20140911.fund.5.backxaction.sql @@ -1,19 +1 @@ -CREATE TABLE {$NAMESPACE}_fund.fund_backertransaction ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) COLLATE utf8_bin NOT NULL, - authorPHID VARCHAR(64) COLLATE utf8_bin NOT NULL, - objectPHID VARCHAR(64) COLLATE utf8_bin NOT NULL, - viewPolicy VARCHAR(64) COLLATE utf8_bin NOT NULL, - editPolicy VARCHAR(64) COLLATE utf8_bin NOT NULL, - commentPHID VARCHAR(64) COLLATE utf8_bin DEFAULT NULL, - commentVersion INT UNSIGNED NOT NULL, - transactionType VARCHAR(32) COLLATE utf8_bin NOT NULL, - oldValue LONGTEXT COLLATE utf8_bin NOT NULL, - newValue LONGTEXT COLLATE utf8_bin NOT NULL, - contentSource LONGTEXT COLLATE utf8_bin NOT NULL, - metadata LONGTEXT COLLATE utf8_bin NOT NULL, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB, COLLATE utf8_general_ci; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141004.currency.01.sql b/resources/sql/autopatches/20141004.currency.01.sql --- a/resources/sql/autopatches/20141004.currency.01.sql +++ b/resources/sql/autopatches/20141004.currency.01.sql @@ -1,4 +1 @@ -TRUNCATE TABLE {$NAMESPACE}_fund.fund_backer; - -ALTER TABLE {$NAMESPACE}_fund.fund_backer - CHANGE amountInCents amountAsCurrency VARCHAR(64) NOT NULL COLLATE utf8_bin; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141004.currency.02.sql b/resources/sql/autopatches/20141004.currency.02.sql --- a/resources/sql/autopatches/20141004.currency.02.sql +++ b/resources/sql/autopatches/20141004.currency.02.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_account - DROP balanceInCents; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141004.currency.03.sql b/resources/sql/autopatches/20141004.currency.03.sql --- a/resources/sql/autopatches/20141004.currency.03.sql +++ b/resources/sql/autopatches/20141004.currency.03.sql @@ -1,4 +1 @@ -TRUNCATE {$NAMESPACE}_phortune.phortune_charge; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_charge - CHANGE amountInCents amountAsCurrency VARCHAR(64) NOT NULL COLLATE utf8_bin; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141004.currency.04.sql b/resources/sql/autopatches/20141004.currency.04.sql --- a/resources/sql/autopatches/20141004.currency.04.sql +++ b/resources/sql/autopatches/20141004.currency.04.sql @@ -1,13 +1 @@ -TRUNCATE {$NAMESPACE}_phortune.phortune_product; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - DROP status; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - DROP billingIntervalInMonths; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - DROP trialPeriodInDays; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - CHANGE priceInCents priceAsCurrency VARCHAR(64) NOT NULL collate utf8_bin; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141004.currency.05.sql b/resources/sql/autopatches/20141004.currency.05.sql --- a/resources/sql/autopatches/20141004.currency.05.sql +++ b/resources/sql/autopatches/20141004.currency.05.sql @@ -1,8 +1 @@ -TRUNCATE {$NAMESPACE}_phortune.phortune_purchase; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_purchase - DROP totalPriceInCents; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_purchase - CHANGE basePriceInCents basePriceAsCurrency VARCHAR(64) - NOT NULL collate utf8_bin; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141004.currency.06.sql b/resources/sql/autopatches/20141004.currency.06.sql --- a/resources/sql/autopatches/20141004.currency.06.sql +++ b/resources/sql/autopatches/20141004.currency.06.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - DROP productType; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141005.phortuneproduct.sql b/resources/sql/autopatches/20141005.phortuneproduct.sql --- a/resources/sql/autopatches/20141005.phortuneproduct.sql +++ b/resources/sql/autopatches/20141005.phortuneproduct.sql @@ -1,22 +1 @@ -DROP TABLE {$NAMESPACE}_phortune.phortune_producttransaction; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - DROP productName; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - DROP priceAsCurrency; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - ADD productClassKey BINARY(12) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - ADD productClass VARCHAR(128) NOT NULL COLLATE utf8_bin; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - ADD productRefKey BINARY(12) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - ADD productRef VARCHAR(128) NOT NULL COLLATE utf8_bin; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_product - ADD UNIQUE KEY `key_product` (productClassKey, productRefKey); +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141006.phortunecart.sql b/resources/sql/autopatches/20141006.phortunecart.sql --- a/resources/sql/autopatches/20141006.phortunecart.sql +++ b/resources/sql/autopatches/20141006.phortunecart.sql @@ -1,4 +1 @@ -TRUNCATE TABLE {$NAMESPACE}_phortune.phortune_cart; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_cart - ADD cartClass VARCHAR(128) NOT NULL COLLATE utf8_bin; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141006.phortunemerchant.sql b/resources/sql/autopatches/20141006.phortunemerchant.sql --- a/resources/sql/autopatches/20141006.phortunemerchant.sql +++ b/resources/sql/autopatches/20141006.phortunemerchant.sql @@ -1,10 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_merchant ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - name VARCHAR(255) NOT NULL COLLATE utf8_bin, - viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, - editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid) -) ENGINE=InnoDB, COLLATE=utf8_bin; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141006.phortunemerchantx.sql b/resources/sql/autopatches/20141006.phortunemerchantx.sql --- a/resources/sql/autopatches/20141006.phortunemerchantx.sql +++ b/resources/sql/autopatches/20141006.phortunemerchantx.sql @@ -1,19 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_merchanttransaction ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) COLLATE utf8_bin NOT NULL, - authorPHID VARCHAR(64) COLLATE utf8_bin NOT NULL, - objectPHID VARCHAR(64) COLLATE utf8_bin NOT NULL, - viewPolicy VARCHAR(64) COLLATE utf8_bin NOT NULL, - editPolicy VARCHAR(64) COLLATE utf8_bin NOT NULL, - commentPHID VARCHAR(64) COLLATE utf8_bin DEFAULT NULL, - commentVersion INT UNSIGNED NOT NULL, - transactionType VARCHAR(32) COLLATE utf8_bin NOT NULL, - oldValue LONGTEXT COLLATE utf8_bin NOT NULL, - newValue LONGTEXT COLLATE utf8_bin NOT NULL, - contentSource LONGTEXT COLLATE utf8_bin NOT NULL, - metadata LONGTEXT COLLATE utf8_bin NOT NULL, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB, COLLATE utf8_general_ci; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141007.fundmerchant.sql b/resources/sql/autopatches/20141007.fundmerchant.sql --- a/resources/sql/autopatches/20141007.fundmerchant.sql +++ b/resources/sql/autopatches/20141007.fundmerchant.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_fund.fund_initiative - ADD merchantPHID VARBINARY(64); +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141007.fundrisks.sql b/resources/sql/autopatches/20141007.fundrisks.sql --- a/resources/sql/autopatches/20141007.fundrisks.sql +++ b/resources/sql/autopatches/20141007.fundrisks.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_fund.fund_initiative - ADD risks LONGTEXT NOT NULL COLLATE utf8_bin; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141007.fundtotal.sql b/resources/sql/autopatches/20141007.fundtotal.sql --- a/resources/sql/autopatches/20141007.fundtotal.sql +++ b/resources/sql/autopatches/20141007.fundtotal.sql @@ -1,4 +1 @@ -ALTER TABLE {$NAMESPACE}_fund.fund_initiative - ADD totalAsCurrency VARCHAR(64) NOT NULL COLLATE utf8_bin; - -UPDATE {$NAMESPACE}_fund.fund_initiative SET totalAsCurrency = '0.00 USD'; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141007.phortunecartmerchant.sql b/resources/sql/autopatches/20141007.phortunecartmerchant.sql --- a/resources/sql/autopatches/20141007.phortunecartmerchant.sql +++ b/resources/sql/autopatches/20141007.phortunecartmerchant.sql @@ -1,5 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_cart - ADD merchantPHID VARBINARY(64) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_cart - ADD KEY `key_merchant` (merchantPHID); +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141007.phortunecharge.sql b/resources/sql/autopatches/20141007.phortunecharge.sql --- a/resources/sql/autopatches/20141007.phortunecharge.sql +++ b/resources/sql/autopatches/20141007.phortunecharge.sql @@ -1,16 +1 @@ -TRUNCATE TABLE {$NAMESPACE}_phortune.phortune_charge; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_charge - DROP paymentProviderKey; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_charge - ADD merchantPHID VARBINARY(64) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_charge - ADD providerPHID VARBINARY(64) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_charge - ADD KEY `key_merchant` (merchantPHID); - -ALTER TABLE {$NAMESPACE}_phortune.phortune_charge - ADD KEY `key_provider` (providerPHID); +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141007.phortunepayment.sql b/resources/sql/autopatches/20141007.phortunepayment.sql --- a/resources/sql/autopatches/20141007.phortunepayment.sql +++ b/resources/sql/autopatches/20141007.phortunepayment.sql @@ -1,16 +1 @@ -TRUNCATE TABLE {$NAMESPACE}_phortune.phortune_paymentmethod; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentmethod - DROP providerType; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentmethod - DROP providerDomain; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentmethod - ADD merchantPHID VARBINARY(64) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentmethod - ADD providerPHID VARBINARY(64) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentmethod - ADD KEY `key_merchant` (merchantPHID, accountPHID); +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141007.phortuneprovider.sql b/resources/sql/autopatches/20141007.phortuneprovider.sql --- a/resources/sql/autopatches/20141007.phortuneprovider.sql +++ b/resources/sql/autopatches/20141007.phortuneprovider.sql @@ -1,12 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_paymentproviderconfig ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - merchantPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - providerClassKey BINARY(12) NOT NULL, - providerClass VARCHAR(128) NOT NULL COLLATE utf8_bin, - metadata LONGTEXT NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid), - UNIQUE KEY `key_merchant` (merchantPHID, providerClassKey) -) ENGINE=InnoDB, COLLATE=utf8_bin; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141007.phortuneproviderx.sql b/resources/sql/autopatches/20141007.phortuneproviderx.sql --- a/resources/sql/autopatches/20141007.phortuneproviderx.sql +++ b/resources/sql/autopatches/20141007.phortuneproviderx.sql @@ -1,19 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_paymentproviderconfigtransaction ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) COLLATE utf8_bin NOT NULL, - authorPHID VARCHAR(64) COLLATE utf8_bin NOT NULL, - objectPHID VARCHAR(64) COLLATE utf8_bin NOT NULL, - viewPolicy VARCHAR(64) COLLATE utf8_bin NOT NULL, - editPolicy VARCHAR(64) COLLATE utf8_bin NOT NULL, - commentPHID VARCHAR(64) COLLATE utf8_bin DEFAULT NULL, - commentVersion INT UNSIGNED NOT NULL, - transactionType VARCHAR(32) COLLATE utf8_bin NOT NULL, - oldValue LONGTEXT COLLATE utf8_bin NOT NULL, - newValue LONGTEXT COLLATE utf8_bin NOT NULL, - contentSource LONGTEXT COLLATE utf8_bin NOT NULL, - metadata LONGTEXT COLLATE utf8_bin NOT NULL, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB, COLLATE utf8_general_ci; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141008.phortunemerchdesc.sql b/resources/sql/autopatches/20141008.phortunemerchdesc.sql --- a/resources/sql/autopatches/20141008.phortunemerchdesc.sql +++ b/resources/sql/autopatches/20141008.phortunemerchdesc.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_merchant - ADD description LONGTEXT NOT NULL COLLATE utf8_bin; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141008.phortuneprovdis.sql b/resources/sql/autopatches/20141008.phortuneprovdis.sql --- a/resources/sql/autopatches/20141008.phortuneprovdis.sql +++ b/resources/sql/autopatches/20141008.phortuneprovdis.sql @@ -1,5 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentproviderconfig - ADD isEnabled BOOL NOT NULL; - -UPDATE {$NAMESPACE}_phortune.phortune_paymentproviderconfig - SET isEnabled = 1; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141008.phortunerefund.sql b/resources/sql/autopatches/20141008.phortunerefund.sql --- a/resources/sql/autopatches/20141008.phortunerefund.sql +++ b/resources/sql/autopatches/20141008.phortunerefund.sql @@ -1,11 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_charge - ADD amountRefundedAsCurrency VARCHAR(64) NOT NULL COLLATE utf8_bin; - -UPDATE {$NAMESPACE}_phortune.phortune_charge - SET amountRefundedAsCurrency = '0.00 USD'; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_charge - ADD refundingPHID VARBINARY(64); - -ALTER TABLE {$NAMESPACE}_phortune.phortune_charge - ADD refundedChargePHID VARBINARY(64); +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141010.fundmailkey.sql b/resources/sql/autopatches/20141010.fundmailkey.sql --- a/resources/sql/autopatches/20141010.fundmailkey.sql +++ b/resources/sql/autopatches/20141010.fundmailkey.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_fund.fund_initiative - ADD mailKey BINARY(20) NOT NULL; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141011.phortunemerchedit.sql b/resources/sql/autopatches/20141011.phortunemerchedit.sql --- a/resources/sql/autopatches/20141011.phortunemerchedit.sql +++ b/resources/sql/autopatches/20141011.phortunemerchedit.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_merchant - DROP editPolicy; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141012.phortunecartxaction.sql b/resources/sql/autopatches/20141012.phortunecartxaction.sql --- a/resources/sql/autopatches/20141012.phortunecartxaction.sql +++ b/resources/sql/autopatches/20141012.phortunecartxaction.sql @@ -1,19 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_carttransaction ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) COLLATE utf8_bin NOT NULL, - authorPHID VARCHAR(64) COLLATE utf8_bin NOT NULL, - objectPHID VARCHAR(64) COLLATE utf8_bin NOT NULL, - viewPolicy VARCHAR(64) COLLATE utf8_bin NOT NULL, - editPolicy VARCHAR(64) COLLATE utf8_bin NOT NULL, - commentPHID VARCHAR(64) COLLATE utf8_bin DEFAULT NULL, - commentVersion INT UNSIGNED NOT NULL, - transactionType VARCHAR(32) COLLATE utf8_bin NOT NULL, - oldValue LONGTEXT COLLATE utf8_bin NOT NULL, - newValue LONGTEXT COLLATE utf8_bin NOT NULL, - contentSource LONGTEXT COLLATE utf8_bin NOT NULL, - metadata LONGTEXT COLLATE utf8_bin NOT NULL, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB, COLLATE utf8_general_ci; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20141013.phortunecartkey.sql b/resources/sql/autopatches/20141013.phortunecartkey.sql --- a/resources/sql/autopatches/20141013.phortunecartkey.sql +++ b/resources/sql/autopatches/20141013.phortunecartkey.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_cart - ADD mailKey BINARY(20) NOT NULL; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20150124.subs.1.sql b/resources/sql/autopatches/20150124.subs.1.sql --- a/resources/sql/autopatches/20150124.subs.1.sql +++ b/resources/sql/autopatches/20150124.subs.1.sql @@ -1,20 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_subscription ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARBINARY(64) NOT NULL, - accountPHID VARBINARY(64) NOT NULL, - merchantPHID VARBINARY(64) NOT NULL, - triggerPHID VARBINARY(64) NOT NULL, - authorPHID VARBINARY(64) NOT NULL, - subscriptionClassKey BINARY(12) NOT NULL, - subscriptionClass VARCHAR(128) NOT NULL COLLATE {$COLLATE_TEXT}, - subscriptionRefKey BINARY(12) NOT NULL, - subscriptionRef VARCHAR(128) NOT NULL COLLATE {$COLLATE_TEXT}, - status VARCHAR(32) NOT NULL COLLATE {$COLLATE_TEXT}, - metadata LONGTEXT NOT NULL COLLATE {$COLLATE_TEXT}, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid), - UNIQUE KEY `key_subscription` (subscriptionClassKey, subscriptionRefKey), - KEY `key_account` (accountPHID), - KEY `key_merchant` (merchantPHID) -) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20150130.phortune.1.subphid.sql b/resources/sql/autopatches/20150130.phortune.1.subphid.sql --- a/resources/sql/autopatches/20150130.phortune.1.subphid.sql +++ b/resources/sql/autopatches/20150130.phortune.1.subphid.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_cart - ADD subscriptionPHID VARBINARY(64); +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20150130.phortune.2.subkey.sql b/resources/sql/autopatches/20150130.phortune.2.subkey.sql --- a/resources/sql/autopatches/20150130.phortune.2.subkey.sql +++ b/resources/sql/autopatches/20150130.phortune.2.subkey.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_cart - ADD KEY `key_subscription` (subscriptionPHID); +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20150131.phortune.1.defaultpayment.sql b/resources/sql/autopatches/20150131.phortune.1.defaultpayment.sql --- a/resources/sql/autopatches/20150131.phortune.1.defaultpayment.sql +++ b/resources/sql/autopatches/20150131.phortune.1.defaultpayment.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_subscription - ADD defaultPaymentMethodPHID VARBINARY(64); +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20150420.invoice.1.sql b/resources/sql/autopatches/20150420.invoice.1.sql --- a/resources/sql/autopatches/20150420.invoice.1.sql +++ b/resources/sql/autopatches/20150420.invoice.1.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_cart - ADD isInvoice BOOL NOT NULL; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20150420.invoice.2.sql b/resources/sql/autopatches/20150420.invoice.2.sql --- a/resources/sql/autopatches/20150420.invoice.2.sql +++ b/resources/sql/autopatches/20150420.invoice.2.sql @@ -1,2 +1 @@ -UPDATE {$NAMESPACE}_phortune.phortune_cart - SET isInvoice = 1 WHERE subscriptionPHID IS NOT NULL; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20160331.fund.comments.1.sql b/resources/sql/autopatches/20160331.fund.comments.1.sql --- a/resources/sql/autopatches/20160331.fund.comments.1.sql +++ b/resources/sql/autopatches/20160331.fund.comments.1.sql @@ -1,18 +1 @@ -CREATE TABLE {$NAMESPACE}_fund.fund_initiativetransaction_comment ( - id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - phid VARCHAR(64) NOT NULL, - transactionPHID VARCHAR(64), - authorPHID VARCHAR(64) NOT NULL, - viewPolicy VARCHAR(64) NOT NULL, - editPolicy VARCHAR(64) NOT NULL, - commentVersion INT UNSIGNED NOT NULL, - content LONGTEXT NOT NULL COLLATE {$COLLATE_TEXT}, - contentSource LONGTEXT NOT NULL COLLATE {$COLLATE_TEXT}, - isDeleted BOOL NOT NULL, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - - UNIQUE KEY `key_phid` (phid), - UNIQUE KEY `key_version` (transactionPHID, commentVersion) - -) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20161025.phortune.contact.1.sql b/resources/sql/autopatches/20161025.phortune.contact.1.sql --- a/resources/sql/autopatches/20161025.phortune.contact.1.sql +++ b/resources/sql/autopatches/20161025.phortune.contact.1.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_merchant - ADD contactInfo LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20161025.phortune.merchant.image.1.sql b/resources/sql/autopatches/20161025.phortune.merchant.image.1.sql --- a/resources/sql/autopatches/20161025.phortune.merchant.image.1.sql +++ b/resources/sql/autopatches/20161025.phortune.merchant.image.1.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_merchant - ADD profileImagePHID VARBINARY(64); +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20161029.phortune.invoice.1.sql b/resources/sql/autopatches/20161029.phortune.invoice.1.sql --- a/resources/sql/autopatches/20161029.phortune.invoice.1.sql +++ b/resources/sql/autopatches/20161029.phortune.invoice.1.sql @@ -1,5 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_merchant - ADD invoiceEmail VARCHAR(255) COLLATE {$COLLATE_TEXT} NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_merchant - ADD invoiceFooter LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20170907.ferret.04.fund.doc.sql b/resources/sql/autopatches/20170907.ferret.04.fund.doc.sql --- a/resources/sql/autopatches/20170907.ferret.04.fund.doc.sql +++ b/resources/sql/autopatches/20170907.ferret.04.fund.doc.sql @@ -1,9 +1 @@ -CREATE TABLE {$NAMESPACE}_fund.fund_initiative_fdocument ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectPHID VARBINARY(64) NOT NULL, - isClosed BOOL NOT NULL, - authorPHID VARBINARY(64), - ownerPHID VARBINARY(64), - epochCreated INT UNSIGNED NOT NULL, - epochModified INT UNSIGNED NOT NULL -) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20170907.ferret.05.fund.field.sql b/resources/sql/autopatches/20170907.ferret.05.fund.field.sql --- a/resources/sql/autopatches/20170907.ferret.05.fund.field.sql +++ b/resources/sql/autopatches/20170907.ferret.05.fund.field.sql @@ -1,8 +1 @@ -CREATE TABLE {$NAMESPACE}_fund.fund_initiative_ffield ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - documentID INT UNSIGNED NOT NULL, - fieldKey VARCHAR(4) NOT NULL COLLATE {$COLLATE_TEXT}, - rawCorpus LONGTEXT NOT NULL COLLATE {$COLLATE_SORT}, - termCorpus LONGTEXT NOT NULL COLLATE {$COLLATE_SORT}, - normalCorpus LONGTEXT NOT NULL COLLATE {$COLLATE_SORT} -) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20170907.ferret.06.fund.ngrams.sql b/resources/sql/autopatches/20170907.ferret.06.fund.ngrams.sql --- a/resources/sql/autopatches/20170907.ferret.06.fund.ngrams.sql +++ b/resources/sql/autopatches/20170907.ferret.06.fund.ngrams.sql @@ -1,5 +1 @@ -CREATE TABLE {$NAMESPACE}_fund.fund_initiative_fngrams ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - documentID INT UNSIGNED NOT NULL, - ngram CHAR(3) NOT NULL COLLATE {$COLLATE_TEXT} -) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20171002.cngram.04.fund.sql b/resources/sql/autopatches/20171002.cngram.04.fund.sql --- a/resources/sql/autopatches/20171002.cngram.04.fund.sql +++ b/resources/sql/autopatches/20171002.cngram.04.fund.sql @@ -1,7 +1 @@ -CREATE TABLE {$NAMESPACE}_fund.fund_initiative_fngrams_common ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - ngram CHAR(3) NOT NULL COLLATE {$COLLATE_TEXT}, - needsCollection BOOL NOT NULL, - UNIQUE KEY `key_ngram` (ngram), - KEY `key_collect` (needsCollection) -) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20190116.phortune.01.billing.sql b/resources/sql/autopatches/20190116.phortune.01.billing.sql --- a/resources/sql/autopatches/20190116.phortune.01.billing.sql +++ b/resources/sql/autopatches/20190116.phortune.01.billing.sql @@ -1,3 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_account - ADD billingName VARCHAR(255) NOT NULL COLLATE {$COLLATE_TEXT}, - ADD billingAddress LONGTEXT NOT NULL COLLATE {$COLLATE_TEXT}; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20190802.email.01.storage.sql b/resources/sql/autopatches/20190802.email.01.storage.sql --- a/resources/sql/autopatches/20190802.email.01.storage.sql +++ b/resources/sql/autopatches/20190802.email.01.storage.sql @@ -1,12 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_accountemail ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARBINARY(64) NOT NULL, - accountPHID VARBINARY(64) NOT NULL, - authorPHID VARBINARY(64) NOT NULL, - address VARCHAR(128) NOT NULL COLLATE {$COLLATE_SORT}, - status VARCHAR(32) NOT NULL COLLATE {$COLLATE_TEXT}, - addressKey VARCHAR(32) NOT NULL COLLATE {$COLLATE_TEXT}, - accessKey VARCHAR(32) NOT NULL COLLATE {$COLLATE_TEXT}, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE {$COLLATE_TEXT}; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20190802.email.02.xaction.sql b/resources/sql/autopatches/20190802.email.02.xaction.sql --- a/resources/sql/autopatches/20190802.email.02.xaction.sql +++ b/resources/sql/autopatches/20190802.email.02.xaction.sql @@ -1,19 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_accountemailtransaction ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARBINARY(64) NOT NULL, - authorPHID VARBINARY(64) NOT NULL, - objectPHID VARBINARY(64) NOT NULL, - viewPolicy VARBINARY(64) NOT NULL, - editPolicy VARBINARY(64) NOT NULL, - commentPHID VARBINARY(64) DEFAULT NULL, - commentVersion INT UNSIGNED NOT NULL, - transactionType VARCHAR(32) NOT NULL, - oldValue LONGTEXT NOT NULL, - newValue LONGTEXT NOT NULL, - contentSource LONGTEXT NOT NULL, - metadata LONGTEXT NOT NULL, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE {$COLLATE_TEXT}; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20190815.account.01.carts.php b/resources/sql/autopatches/20190815.account.01.carts.php --- a/resources/sql/autopatches/20190815.account.01.carts.php +++ b/resources/sql/autopatches/20190815.account.01.carts.php @@ -1,10 +1 @@ -addEdge($cart->getAccountPHID(), $edge_type, $cart->getMerchantPHID()) - ->save(); -} +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20190815.account.02.subscriptions.php b/resources/sql/autopatches/20190815.account.02.subscriptions.php --- a/resources/sql/autopatches/20190815.account.02.subscriptions.php +++ b/resources/sql/autopatches/20190815.account.02.subscriptions.php @@ -1,10 +1 @@ -addEdge($sub->getAccountPHID(), $edge_type, $sub->getMerchantPHID()) - ->save(); -} +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20190816.payment.01.xaction.sql b/resources/sql/autopatches/20190816.payment.01.xaction.sql --- a/resources/sql/autopatches/20190816.payment.01.xaction.sql +++ b/resources/sql/autopatches/20190816.payment.01.xaction.sql @@ -1,19 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_paymentmethodtransaction ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARBINARY(64) NOT NULL, - authorPHID VARBINARY(64) NOT NULL, - objectPHID VARBINARY(64) NOT NULL, - viewPolicy VARBINARY(64) NOT NULL, - editPolicy VARBINARY(64) NOT NULL, - commentPHID VARBINARY(64) DEFAULT NULL, - commentVersion INT UNSIGNED NOT NULL, - transactionType VARCHAR(32) NOT NULL, - oldValue LONGTEXT NOT NULL, - newValue LONGTEXT NOT NULL, - contentSource LONGTEXT NOT NULL, - metadata LONGTEXT NOT NULL, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE {$COLLATE_TEXT}; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20190816.subscription.01.xaction.sql b/resources/sql/autopatches/20190816.subscription.01.xaction.sql --- a/resources/sql/autopatches/20190816.subscription.01.xaction.sql +++ b/resources/sql/autopatches/20190816.subscription.01.xaction.sql @@ -1,19 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_subscriptiontransaction ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARBINARY(64) NOT NULL, - authorPHID VARBINARY(64) NOT NULL, - objectPHID VARBINARY(64) NOT NULL, - viewPolicy VARBINARY(64) NOT NULL, - editPolicy VARBINARY(64) NOT NULL, - commentPHID VARBINARY(64) DEFAULT NULL, - commentVersion INT UNSIGNED NOT NULL, - transactionType VARCHAR(32) NOT NULL, - oldValue LONGTEXT NOT NULL, - newValue LONGTEXT NOT NULL, - contentSource LONGTEXT NOT NULL, - metadata LONGTEXT NOT NULL, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE {$COLLATE_TEXT}; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20190822.merchant.01.view.sql b/resources/sql/autopatches/20190822.merchant.01.view.sql --- a/resources/sql/autopatches/20190822.merchant.01.view.sql +++ b/resources/sql/autopatches/20190822.merchant.01.view.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_phortune.phortune_merchant - DROP viewPolicy; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20210316.almanac.15.intiative-mailkey.php b/resources/sql/autopatches/20210316.almanac.15.intiative-mailkey.php --- a/resources/sql/autopatches/20210316.almanac.15.intiative-mailkey.php +++ b/resources/sql/autopatches/20210316.almanac.15.intiative-mailkey.php @@ -1,28 +1 @@ -establishConnection('w'); - -$properties_table = new PhabricatorMetaMTAMailProperties(); -$conn = $properties_table->establishConnection('w'); - -$iterator = new LiskRawMigrationIterator( - $initiative_conn, - $initiative_table->getTableName()); - -foreach ($iterator as $row) { - queryfx( - $conn, - 'INSERT IGNORE INTO %R - (objectPHID, mailProperties, dateCreated, dateModified) - VALUES - (%s, %s, %d, %d)', - $properties_table, - $row['phid'], - phutil_json_encode( - array( - 'mailKey' => $row['mailKey'], - )), - PhabricatorTime::getNow(), - PhabricatorTime::getNow()); -} +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/autopatches/20210316.almanac.16.initiative-dropmailkey.sql b/resources/sql/autopatches/20210316.almanac.16.initiative-dropmailkey.sql --- a/resources/sql/autopatches/20210316.almanac.16.initiative-dropmailkey.sql +++ b/resources/sql/autopatches/20210316.almanac.16.initiative-dropmailkey.sql @@ -1,2 +1 @@ -ALTER TABLE {$NAMESPACE}_fund.fund_initiative - DROP mailKey; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/patches/20130322.phortune.sql b/resources/sql/patches/20130322.phortune.sql --- a/resources/sql/patches/20130322.phortune.sql +++ b/resources/sql/patches/20130322.phortune.sql @@ -1,45 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_account ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - name VARCHAR(255) NOT NULL, - balanceInCents BIGINT NOT NULL, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE {$NAMESPACE}_phortune.phortune_accounttransaction ( - id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, - editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, - commentPHID VARCHAR(64) COLLATE utf8_bin, - commentVersion INT UNSIGNED NOT NULL, - transactionType VARCHAR(32) NOT NULL COLLATE utf8_bin, - oldValue LONGTEXT NOT NULL COLLATE utf8_bin, - newValue LONGTEXT NOT NULL COLLATE utf8_bin, - contentSource LONGTEXT NOT NULL COLLATE utf8_bin, - metadata LONGTEXT NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid), - KEY `key_object` (objectPHID) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE {$NAMESPACE}_phortune.edge ( - src VARCHAR(64) NOT NULL COLLATE utf8_bin, - type INT UNSIGNED NOT NULL COLLATE utf8_bin, - dst VARCHAR(64) NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - seq INT UNSIGNED NOT NULL, - dataID INT UNSIGNED, - PRIMARY KEY (src, type, dst), - KEY (src, type, dateCreated, seq) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE {$NAMESPACE}_phortune.edgedata ( - id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - data LONGTEXT NOT NULL COLLATE utf8_bin -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/patches/20130323.phortunepayment.sql b/resources/sql/patches/20130323.phortunepayment.sql --- a/resources/sql/patches/20130323.phortunepayment.sql +++ b/resources/sql/patches/20130323.phortunepayment.sql @@ -1,14 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_paymentmethod ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - name VARCHAR(255) NOT NULL, - status VARCHAR(64) NOT NULL COLLATE utf8_bin, - accountPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - expiresEpoch INT UNSIGNED, - metadata LONGTEXT NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid), - KEY `key_account` (accountPHID, status) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/patches/20130324.phortuneproduct.sql b/resources/sql/patches/20130324.phortuneproduct.sql --- a/resources/sql/patches/20130324.phortuneproduct.sql +++ b/resources/sql/patches/20130324.phortuneproduct.sql @@ -1,35 +1 @@ -CREATE TABLE {$NAMESPACE}_phortune.phortune_product ( - id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - productName VARCHAR(255) NOT NULL, - productType VARCHAR(64) NOT NULL COLLATE utf8_bin, - status VARCHAR(64) NOT NULL COLLATE utf8_bin, - priceInCents BIGINT NOT NULL, - billingIntervalInMonths INT UNSIGNED, - trialPeriodInDays INT UNSIGNED, - metadata LONGTEXT NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid), - KEY `key_status` (status) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE {$NAMESPACE}_phortune.phortune_producttransaction ( - id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - phid VARCHAR(64) NOT NULL COLLATE utf8_bin, - authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, - viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, - editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, - commentPHID VARCHAR(64) COLLATE utf8_bin, - commentVersion INT UNSIGNED NOT NULL, - transactionType VARCHAR(32) NOT NULL COLLATE utf8_bin, - oldValue LONGTEXT NOT NULL COLLATE utf8_bin, - newValue LONGTEXT NOT NULL COLLATE utf8_bin, - contentSource LONGTEXT NOT NULL COLLATE utf8_bin, - metadata LONGTEXT NOT NULL COLLATE utf8_bin, - dateCreated INT UNSIGNED NOT NULL, - dateModified INT UNSIGNED NOT NULL, - UNIQUE KEY `key_phid` (phid), - KEY `key_object` (objectPHID) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/patches/20130423.phortunepaymentrevised.sql b/resources/sql/patches/20130423.phortunepaymentrevised.sql --- a/resources/sql/patches/20130423.phortunepaymentrevised.sql +++ b/resources/sql/patches/20130423.phortunepaymentrevised.sql @@ -1,19 +1 @@ -TRUNCATE TABLE {$NAMESPACE}_phortune.phortune_paymentmethod; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentmethod - ADD brand VARCHAR(64) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentmethod - ADD expires VARCHAR(16) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentmethod - ADD providerType VARCHAR(16) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentmethod - ADD providerDomain VARCHAR(64) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentmethod - ADD lastFourDigits VARCHAR(16) NOT NULL; - -ALTER TABLE {$NAMESPACE}_phortune.phortune_paymentmethod - DROP expiresEpoch; +/* This file is intentionally left empty, see T15726 */ diff --git a/resources/sql/quickstart.sql b/resources/sql/quickstart.sql --- a/resources/sql/quickstart.sql +++ b/resources/sql/quickstart.sql @@ -3724,234 +3724,6 @@ KEY `objectPHID` (`objectPHID`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `{$NAMESPACE}_fund` /*!40100 DEFAULT CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} */; - -USE `{$NAMESPACE}_fund`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `edge` ( - `src` varbinary(64) NOT NULL, - `type` int(10) unsigned NOT NULL, - `dst` varbinary(64) NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `seq` int(10) unsigned NOT NULL, - `dataID` int(10) unsigned DEFAULT NULL, - PRIMARY KEY (`src`,`type`,`dst`), - UNIQUE KEY `key_dst` (`dst`,`type`,`src`), - KEY `src` (`src`,`type`,`dateCreated`,`seq`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_fund`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `edgedata` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `data` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_fund`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `fund_backer` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `initiativePHID` varbinary(64) NOT NULL, - `backerPHID` varbinary(64) NOT NULL, - `status` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `amountAsCurrency` varchar(64) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `properties` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_initiative` (`initiativePHID`), - KEY `key_backer` (`backerPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_fund`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `fund_backertransaction` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `objectPHID` varbinary(64) NOT NULL, - `viewPolicy` varbinary(64) NOT NULL, - `editPolicy` varbinary(64) NOT NULL, - `commentPHID` varbinary(64) DEFAULT NULL, - `commentVersion` int(10) unsigned NOT NULL, - `transactionType` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `oldValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `newValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `contentSource` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_fund`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `fund_initiative` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `name` varchar(255) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `ownerPHID` varbinary(64) NOT NULL, - `description` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `viewPolicy` varbinary(64) NOT NULL, - `editPolicy` varbinary(64) NOT NULL, - `status` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - `merchantPHID` varbinary(64) DEFAULT NULL, - `risks` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `totalAsCurrency` varchar(64) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `mailKey` binary(20) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_status` (`status`), - KEY `key_owner` (`ownerPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_fund`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `fund_initiative_fdocument` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `objectPHID` varbinary(64) NOT NULL, - `isClosed` tinyint(1) NOT NULL, - `authorPHID` varbinary(64) DEFAULT NULL, - `ownerPHID` varbinary(64) DEFAULT NULL, - `epochCreated` int(10) unsigned NOT NULL, - `epochModified` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_object` (`objectPHID`), - KEY `key_author` (`authorPHID`), - KEY `key_owner` (`ownerPHID`), - KEY `key_created` (`epochCreated`), - KEY `key_modified` (`epochModified`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_fund`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `fund_initiative_ffield` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `documentID` int(10) unsigned NOT NULL, - `fieldKey` varchar(4) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, - `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, - `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_fund`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `fund_initiative_fngrams` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `documentID` int(10) unsigned NOT NULL, - `ngram` char(3) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - PRIMARY KEY (`id`), - KEY `key_ngram` (`ngram`,`documentID`), - KEY `key_object` (`documentID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_fund`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `fund_initiative_fngrams_common` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `ngram` char(3) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `needsCollection` tinyint(1) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_ngram` (`ngram`), - KEY `key_collect` (`needsCollection`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_fund`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `fund_initiativetransaction` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `objectPHID` varbinary(64) NOT NULL, - `viewPolicy` varbinary(64) NOT NULL, - `editPolicy` varbinary(64) NOT NULL, - `commentPHID` varbinary(64) DEFAULT NULL, - `commentVersion` int(10) unsigned NOT NULL, - `transactionType` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `oldValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `newValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `contentSource` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_fund`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `fund_initiativetransaction_comment` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `transactionPHID` varbinary(64) DEFAULT NULL, - `authorPHID` varbinary(64) NOT NULL, - `viewPolicy` varbinary(64) NOT NULL, - `editPolicy` varbinary(64) NOT NULL, - `commentVersion` int(10) unsigned NOT NULL, - `content` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `contentSource` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `isDeleted` tinyint(1) NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - UNIQUE KEY `key_version` (`transactionPHID`,`commentVersion`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - CREATE DATABASE /*!32312 IF NOT EXISTS*/ `{$NAMESPACE}_harbormaster` /*!40100 DEFAULT CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} */; USE `{$NAMESPACE}_harbormaster`; @@ -5132,7 +4904,7 @@ PRIMARY KEY (`patch`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; -INSERT INTO `patch_status` VALUES ('phabricator:000.project.sql',1556231684,NULL),('phabricator:0000.legacy.sql',1556231684,NULL),('phabricator:001.maniphest_projects.sql',1556231684,NULL),('phabricator:002.oauth.sql',1556231684,NULL),('phabricator:003.more_oauth.sql',1556231684,NULL),('phabricator:004.daemonrepos.sql',1556231684,NULL),('phabricator:005.workers.sql',1556231684,NULL),('phabricator:006.repository.sql',1556231684,NULL),('phabricator:007.daemonlog.sql',1556231684,NULL),('phabricator:008.repoopt.sql',1556231684,NULL),('phabricator:009.repo_summary.sql',1556231684,NULL),('phabricator:010.herald.sql',1556231684,NULL),('phabricator:011.badcommit.sql',1556231684,NULL),('phabricator:012.dropphidtype.sql',1556231684,NULL),('phabricator:013.commitdetail.sql',1556231684,NULL),('phabricator:014.shortcuts.sql',1556231684,NULL),('phabricator:015.preferences.sql',1556231684,NULL),('phabricator:016.userrealnameindex.sql',1556231684,NULL),('phabricator:017.sessionkeys.sql',1556231684,NULL),('phabricator:018.owners.sql',1556231684,NULL),('phabricator:019.arcprojects.sql',1556231684,NULL),('phabricator:020.pathcapital.sql',1556231684,NULL),('phabricator:021.xhpastview.sql',1556231684,NULL),('phabricator:022.differentialcommit.sql',1556231684,NULL),('phabricator:023.dxkeys.sql',1556231685,NULL),('phabricator:024.mlistkeys.sql',1556231685,NULL),('phabricator:025.commentopt.sql',1556231685,NULL),('phabricator:026.diffpropkey.sql',1556231685,NULL),('phabricator:027.metamtakeys.sql',1556231685,NULL),('phabricator:028.systemagent.sql',1556231685,NULL),('phabricator:029.cursors.sql',1556231685,NULL),('phabricator:030.imagemacro.sql',1556231685,NULL),('phabricator:031.workerrace.sql',1556231685,NULL),('phabricator:032.viewtime.sql',1556231685,NULL),('phabricator:033.privtest.sql',1556231685,NULL),('phabricator:034.savedheader.sql',1556231685,NULL),('phabricator:035.proxyimage.sql',1556231685,NULL),('phabricator:036.mailkey.sql',1556231685,NULL),('phabricator:037.setuptest.sql',1556231685,NULL),('phabricator:038.admin.sql',1556231685,NULL),('phabricator:039.userlog.sql',1556231685,NULL),('phabricator:040.transform.sql',1556231685,NULL),('phabricator:041.heraldrepetition.sql',1556231685,NULL),('phabricator:042.commentmetadata.sql',1556231685,NULL),('phabricator:043.pastebin.sql',1556231685,NULL),('phabricator:044.countdown.sql',1556231685,NULL),('phabricator:045.timezone.sql',1556231685,NULL),('phabricator:046.conduittoken.sql',1556231685,NULL),('phabricator:047.projectstatus.sql',1556231685,NULL),('phabricator:048.relationshipkeys.sql',1556231685,NULL),('phabricator:049.projectowner.sql',1556231685,NULL),('phabricator:050.taskdenormal.sql',1556231685,NULL),('phabricator:051.projectfilter.sql',1556231685,NULL),('phabricator:052.pastelanguage.sql',1556231685,NULL),('phabricator:053.feed.sql',1556231685,NULL),('phabricator:054.subscribers.sql',1556231685,NULL),('phabricator:055.add_author_to_files.sql',1556231685,NULL),('phabricator:056.slowvote.sql',1556231685,NULL),('phabricator:057.parsecache.sql',1556231685,NULL),('phabricator:058.missingkeys.sql',1556231685,NULL),('phabricator:059.engines.php',1556231685,NULL),('phabricator:060.phriction.sql',1556231685,NULL),('phabricator:061.phrictioncontent.sql',1556231685,NULL),('phabricator:062.phrictionmenu.sql',1556231685,NULL),('phabricator:063.pasteforks.sql',1556231685,NULL),('phabricator:064.subprojects.sql',1556231685,NULL),('phabricator:065.sshkeys.sql',1556231685,NULL),('phabricator:066.phrictioncontent.sql',1556231685,NULL),('phabricator:067.preferences.sql',1556231685,NULL),('phabricator:068.maniphestauxiliarystorage.sql',1556231685,NULL),('phabricator:069.heraldxscript.sql',1556231685,NULL),('phabricator:070.differentialaux.sql',1556231685,NULL),('phabricator:071.contentsource.sql',1556231685,NULL),('phabricator:072.blamerevert.sql',1556231685,NULL),('phabricator:073.reposymbols.sql',1556231685,NULL),('phabricator:074.affectedpath.sql',1556231685,NULL),('phabricator:075.revisionhash.sql',1556231685,NULL),('phabricator:076.indexedlanguages.sql',1556231685,NULL),('phabricator:077.originalemail.sql',1556231685,NULL),('phabricator:078.nametoken.sql',1556231685,NULL),('phabricator:079.nametokenindex.php',1556231685,NULL),('phabricator:080.filekeys.sql',1556231685,NULL),('phabricator:081.filekeys.php',1556231685,NULL),('phabricator:082.xactionkey.sql',1556231685,NULL),('phabricator:083.dxviewtime.sql',1556231685,NULL),('phabricator:084.pasteauthorkey.sql',1556231685,NULL),('phabricator:085.packagecommitrelationship.sql',1556231685,NULL),('phabricator:086.formeraffil.sql',1556231685,NULL),('phabricator:087.phrictiondelete.sql',1556231685,NULL),('phabricator:088.audit.sql',1556231685,NULL),('phabricator:089.projectwiki.sql',1556231685,NULL),('phabricator:090.forceuniqueprojectnames.php',1556231685,NULL),('phabricator:091.uniqueslugkey.sql',1556231686,NULL),('phabricator:092.dropgithubnotification.sql',1556231686,NULL),('phabricator:093.gitremotes.php',1556231686,NULL),('phabricator:094.phrictioncolumn.sql',1556231686,NULL),('phabricator:095.directory.sql',1556231686,NULL),('phabricator:096.filename.sql',1556231686,NULL),('phabricator:097.heraldruletypes.sql',1556231686,NULL),('phabricator:098.heraldruletypemigration.php',1556231686,NULL),('phabricator:099.drydock.sql',1556231686,NULL),('phabricator:100.projectxaction.sql',1556231686,NULL),('phabricator:101.heraldruleapplied.sql',1556231686,NULL),('phabricator:102.heraldcleanup.php',1556231686,NULL),('phabricator:103.heraldedithistory.sql',1556231686,NULL),('phabricator:104.searchkey.sql',1556231686,NULL),('phabricator:105.mimetype.sql',1556231686,NULL),('phabricator:106.chatlog.sql',1556231686,NULL),('phabricator:107.oauthserver.sql',1556231686,NULL),('phabricator:108.oauthscope.sql',1556231686,NULL),('phabricator:109.oauthclientphidkey.sql',1556231686,NULL),('phabricator:110.commitaudit.sql',1556231686,NULL),('phabricator:111.commitauditmigration.php',1556231686,NULL),('phabricator:112.oauthaccesscoderedirecturi.sql',1556231686,NULL),('phabricator:113.lastreviewer.sql',1556231686,NULL),('phabricator:114.auditrequest.sql',1556231686,NULL),('phabricator:115.prepareutf8.sql',1556231686,NULL),('phabricator:116.utf8-backup-first-expect-wait.sql',1556231688,NULL),('phabricator:117.repositorydescription.php',1556231688,NULL),('phabricator:118.auditinline.sql',1556231688,NULL),('phabricator:119.filehash.sql',1556231688,NULL),('phabricator:120.noop.sql',1556231688,NULL),('phabricator:121.drydocklog.sql',1556231688,NULL),('phabricator:122.flag.sql',1556231688,NULL),('phabricator:123.heraldrulelog.sql',1556231688,NULL),('phabricator:124.subpriority.sql',1556231688,NULL),('phabricator:125.ipv6.sql',1556231688,NULL),('phabricator:126.edges.sql',1556231688,NULL),('phabricator:127.userkeybody.sql',1556231688,NULL),('phabricator:128.phabricatorcom.sql',1556231688,NULL),('phabricator:129.savedquery.sql',1556231688,NULL),('phabricator:130.denormalrevisionquery.sql',1556231688,NULL),('phabricator:131.migraterevisionquery.php',1556231688,NULL),('phabricator:132.phame.sql',1556231688,NULL),('phabricator:133.imagemacro.sql',1556231688,NULL),('phabricator:134.emptysearch.sql',1556231688,NULL),('phabricator:135.datecommitted.sql',1556231688,NULL),('phabricator:136.sex.sql',1556231688,NULL),('phabricator:137.auditmetadata.sql',1556231688,NULL),('phabricator:138.notification.sql',1556231688,NULL),('phabricator:20121209.pholioxactions.sql',1556231689,NULL),('phabricator:20121209.xmacroadd.sql',1556231689,NULL),('phabricator:20121209.xmacromigrate.php',1556231689,NULL),('phabricator:20121209.xmacromigratekey.sql',1556231689,NULL),('phabricator:20121220.generalcache.sql',1556231689,NULL),('phabricator:20121226.config.sql',1556231689,NULL),('phabricator:20130101.confxaction.sql',1556231689,NULL),('phabricator:20130102.metamtareceivedmailmessageidhash.sql',1556231689,NULL),('phabricator:20130103.filemetadata.sql',1556231689,NULL),('phabricator:20130111.conpherence.sql',1556231689,NULL),('phabricator:20130127.altheraldtranscript.sql',1556231689,NULL),('phabricator:20130131.conpherencepics.sql',1556231689,NULL),('phabricator:20130201.revisionunsubscribed.php',1556231689,NULL),('phabricator:20130201.revisionunsubscribed.sql',1556231689,NULL),('phabricator:20130214.chatlogchannel.sql',1556231689,NULL),('phabricator:20130214.chatlogchannelid.sql',1556231689,NULL),('phabricator:20130214.token.sql',1556231689,NULL),('phabricator:20130215.phabricatorfileaddttl.sql',1556231689,NULL),('phabricator:20130217.cachettl.sql',1556231689,NULL),('phabricator:20130218.longdaemon.sql',1556231689,NULL),('phabricator:20130218.updatechannelid.php',1556231689,NULL),('phabricator:20130219.commitsummary.sql',1556231689,NULL),('phabricator:20130219.commitsummarymig.php',1556231689,NULL),('phabricator:20130222.dropchannel.sql',1556231689,NULL),('phabricator:20130226.commitkey.sql',1556231689,NULL),('phabricator:20130304.lintauthor.sql',1556231689,NULL),('phabricator:20130310.xactionmeta.sql',1556231689,NULL),('phabricator:20130317.phrictionedge.sql',1556231689,NULL),('phabricator:20130319.conpherence.sql',1556231689,NULL),('phabricator:20130319.phabricatorfileexplicitupload.sql',1556231689,NULL),('phabricator:20130320.phlux.sql',1556231689,NULL),('phabricator:20130321.token.sql',1556231689,NULL),('phabricator:20130322.phortune.sql',1556231689,NULL),('phabricator:20130323.phortunepayment.sql',1556231689,NULL),('phabricator:20130324.phortuneproduct.sql',1556231689,NULL),('phabricator:20130330.phrequent.sql',1556231689,NULL),('phabricator:20130403.conpherencecache.sql',1556231689,NULL),('phabricator:20130403.conpherencecachemig.php',1556231689,NULL),('phabricator:20130409.commitdrev.php',1556231689,NULL),('phabricator:20130417.externalaccount.sql',1556231689,NULL),('phabricator:20130423.conpherenceindices.sql',1556231690,NULL),('phabricator:20130423.phortunepaymentrevised.sql',1556231690,NULL),('phabricator:20130423.updateexternalaccount.sql',1556231689,NULL),('phabricator:20130426.search_savedquery.sql',1556231690,NULL),('phabricator:20130502.countdownrevamp1.sql',1556231690,NULL),('phabricator:20130502.countdownrevamp2.php',1556231690,NULL),('phabricator:20130502.countdownrevamp3.sql',1556231690,NULL),('phabricator:20130507.releephrqmailkey.sql',1556231690,NULL),('phabricator:20130507.releephrqmailkeypop.php',1556231690,NULL),('phabricator:20130507.releephrqsimplifycols.sql',1556231690,NULL),('phabricator:20130508.releephtransactions.sql',1556231690,NULL),('phabricator:20130508.releephtransactionsmig.php',1556231690,NULL),('phabricator:20130508.search_namedquery.sql',1556231690,NULL),('phabricator:20130513.receviedmailstatus.sql',1556231690,NULL),('phabricator:20130519.diviner.sql',1556231690,NULL),('phabricator:20130521.dropconphimages.sql',1556231690,NULL),('phabricator:20130523.maniphest_owners.sql',1556231690,NULL),('phabricator:20130524.repoxactions.sql',1556231690,NULL),('phabricator:20130529.macroauthor.sql',1556231690,NULL),('phabricator:20130529.macroauthormig.php',1556231690,NULL),('phabricator:20130530.macrodatekey.sql',1556231690,NULL),('phabricator:20130530.pastekeys.sql',1556231690,NULL),('phabricator:20130530.sessionhash.php',1556231690,NULL),('phabricator:20130531.filekeys.sql',1556231690,NULL),('phabricator:20130602.morediviner.sql',1556231690,NULL),('phabricator:20130602.namedqueries.sql',1556231690,NULL),('phabricator:20130606.userxactions.sql',1556231690,NULL),('phabricator:20130607.xaccount.sql',1556231690,NULL),('phabricator:20130611.migrateoauth.php',1556231690,NULL),('phabricator:20130611.nukeldap.php',1556231690,NULL),('phabricator:20130613.authdb.sql',1556231690,NULL),('phabricator:20130619.authconf.php',1556231690,NULL),('phabricator:20130620.diffxactions.sql',1556231690,NULL),('phabricator:20130621.diffcommentphid.sql',1556231690,NULL),('phabricator:20130621.diffcommentphidmig.php',1556231690,NULL),('phabricator:20130621.diffcommentunphid.sql',1556231690,NULL),('phabricator:20130622.doorkeeper.sql',1556231690,NULL),('phabricator:20130628.legalpadv0.sql',1556231690,NULL),('phabricator:20130701.conduitlog.sql',1556231690,NULL),('phabricator:20130703.legalpaddocdenorm.php',1556231690,NULL),('phabricator:20130703.legalpaddocdenorm.sql',1556231690,NULL),('phabricator:20130709.droptimeline.sql',1556231690,NULL),('phabricator:20130709.legalpadsignature.sql',1556231690,NULL),('phabricator:20130711.pholioimageobsolete.php',1556231690,NULL),('phabricator:20130711.pholioimageobsolete.sql',1556231690,NULL),('phabricator:20130711.pholioimageobsolete2.sql',1556231690,NULL),('phabricator:20130711.trimrealnames.php',1556231690,NULL),('phabricator:20130714.votexactions.sql',1556231690,NULL),('phabricator:20130715.votecomments.php',1556231690,NULL),('phabricator:20130715.voteedges.sql',1556231690,NULL),('phabricator:20130716.archivememberlessprojects.php',1556231690,NULL),('phabricator:20130722.pholioreplace.sql',1556231690,NULL),('phabricator:20130723.taskstarttime.sql',1556231690,NULL),('phabricator:20130726.ponderxactions.sql',1556231690,NULL),('phabricator:20130727.ponderquestionstatus.sql',1556231690,NULL),('phabricator:20130728.ponderunique.php',1556231690,NULL),('phabricator:20130728.ponderuniquekey.sql',1556231690,NULL),('phabricator:20130728.ponderxcomment.php',1556231690,NULL),('phabricator:20130731.releephcutpointidentifier.sql',1556231690,NULL),('phabricator:20130731.releephproject.sql',1556231690,NULL),('phabricator:20130731.releephrepoid.sql',1556231690,NULL),('phabricator:20130801.pastexactions.php',1556231690,NULL),('phabricator:20130801.pastexactions.sql',1556231690,NULL),('phabricator:20130802.heraldphid.sql',1556231690,NULL),('phabricator:20130802.heraldphids.php',1556231690,NULL),('phabricator:20130802.heraldphidukey.sql',1556231690,NULL),('phabricator:20130802.heraldxactions.sql',1556231690,NULL),('phabricator:20130805.pasteedges.sql',1556231690,NULL),('phabricator:20130805.pastemailkey.sql',1556231690,NULL),('phabricator:20130805.pastemailkeypop.php',1556231690,NULL),('phabricator:20130814.usercustom.sql',1556231690,NULL),('phabricator:20130820.file-mailkey-populate.php',1556231691,NULL),('phabricator:20130820.filemailkey.sql',1556231691,NULL),('phabricator:20130820.filexactions.sql',1556231691,NULL),('phabricator:20130820.releephxactions.sql',1556231690,NULL),('phabricator:20130826.divinernode.sql',1556231691,NULL),('phabricator:20130912.maniphest.1.touch.sql',1556231691,NULL),('phabricator:20130912.maniphest.2.created.sql',1556231691,NULL),('phabricator:20130912.maniphest.3.nameindex.sql',1556231691,NULL),('phabricator:20130912.maniphest.4.fillindex.php',1556231691,NULL),('phabricator:20130913.maniphest.1.migratesearch.php',1556231691,NULL),('phabricator:20130914.usercustom.sql',1556231691,NULL),('phabricator:20130915.maniphestcustom.sql',1556231691,NULL),('phabricator:20130915.maniphestmigrate.php',1556231691,NULL),('phabricator:20130915.maniphestqdrop.sql',1556231691,NULL),('phabricator:20130919.mfieldconf.php',1556231691,NULL),('phabricator:20130920.repokeyspolicy.sql',1556231691,NULL),('phabricator:20130921.mtransactions.sql',1556231691,NULL),('phabricator:20130921.xmigratemaniphest.php',1556231691,NULL),('phabricator:20130923.mrename.sql',1556231691,NULL),('phabricator:20130924.mdraftkey.sql',1556231691,NULL),('phabricator:20130925.mpolicy.sql',1556231691,NULL),('phabricator:20130925.xpolicy.sql',1556231691,NULL),('phabricator:20130926.dcustom.sql',1556231691,NULL),('phabricator:20130926.dinkeys.sql',1556231691,NULL),('phabricator:20130926.dinline.php',1556231691,NULL),('phabricator:20130927.audiomacro.sql',1556231691,NULL),('phabricator:20130929.filepolicy.sql',1556231691,NULL),('phabricator:20131004.dxedgekey.sql',1556231691,NULL),('phabricator:20131004.dxreviewers.php',1556231691,NULL),('phabricator:20131006.hdisable.sql',1556231691,NULL),('phabricator:20131010.pstorage.sql',1556231691,NULL),('phabricator:20131015.cpolicy.sql',1556231691,NULL),('phabricator:20131020.col1.sql',1556231691,NULL),('phabricator:20131020.harbormaster.sql',1556231691,NULL),('phabricator:20131020.pcustom.sql',1556231691,NULL),('phabricator:20131020.pxaction.sql',1556231691,NULL),('phabricator:20131020.pxactionmig.php',1556231691,NULL),('phabricator:20131025.repopush.sql',1556231691,NULL),('phabricator:20131026.commitstatus.sql',1556231691,NULL),('phabricator:20131030.repostatusmessage.sql',1556231691,NULL),('phabricator:20131031.vcspassword.sql',1556231691,NULL),('phabricator:20131105.buildstep.sql',1556231691,NULL),('phabricator:20131106.diffphid.1.col.sql',1556231691,NULL),('phabricator:20131106.diffphid.2.mig.php',1556231691,NULL),('phabricator:20131106.diffphid.3.key.sql',1556231691,NULL),('phabricator:20131106.nuance-v0.sql',1556231691,NULL),('phabricator:20131107.buildlog.sql',1556231691,NULL),('phabricator:20131112.userverified.1.col.sql',1556231691,NULL),('phabricator:20131112.userverified.2.mig.php',1556231691,NULL),('phabricator:20131118.ownerorder.php',1556231691,NULL),('phabricator:20131119.passphrase.sql',1556231691,NULL),('phabricator:20131120.nuancesourcetype.sql',1556231691,NULL),('phabricator:20131121.passphraseedge.sql',1556231691,NULL),('phabricator:20131121.repocredentials.1.col.sql',1556231691,NULL),('phabricator:20131121.repocredentials.2.mig.php',1556231691,NULL),('phabricator:20131122.repomirror.sql',1556231691,NULL),('phabricator:20131123.drydockblueprintpolicy.sql',1556231691,NULL),('phabricator:20131129.drydockresourceblueprint.sql',1556231691,NULL),('phabricator:20131204.pushlog.sql',1556231691,NULL),('phabricator:20131205.buildsteporder.sql',1556231691,NULL),('phabricator:20131205.buildstepordermig.php',1556231691,NULL),('phabricator:20131205.buildtargets.sql',1556231691,NULL),('phabricator:20131206.phragment.sql',1556231691,NULL),('phabricator:20131206.phragmentnull.sql',1556231691,NULL),('phabricator:20131208.phragmentsnapshot.sql',1556231691,NULL),('phabricator:20131211.phragmentedges.sql',1556231691,NULL),('phabricator:20131217.pushlogphid.1.col.sql',1556231691,NULL),('phabricator:20131217.pushlogphid.2.mig.php',1556231691,NULL),('phabricator:20131217.pushlogphid.3.key.sql',1556231692,NULL),('phabricator:20131219.pxdrop.sql',1556231692,NULL),('phabricator:20131224.harbormanual.sql',1556231692,NULL),('phabricator:20131227.heraldobject.sql',1556231692,NULL),('phabricator:20131231.dropshortcut.sql',1556231692,NULL),('phabricator:20131302.maniphestvalue.sql',1556231689,NULL),('phabricator:20140104.harbormastercmd.sql',1556231692,NULL),('phabricator:20140106.macromailkey.1.sql',1556231692,NULL),('phabricator:20140106.macromailkey.2.php',1556231692,NULL),('phabricator:20140108.ddbpname.1.sql',1556231692,NULL),('phabricator:20140108.ddbpname.2.php',1556231692,NULL),('phabricator:20140109.ddxactions.sql',1556231692,NULL),('phabricator:20140109.projectcolumnsdates.sql',1556231692,NULL),('phabricator:20140113.legalpadsig.1.sql',1556231692,NULL),('phabricator:20140113.legalpadsig.2.php',1556231692,NULL),('phabricator:20140115.auth.1.id.sql',1556231692,NULL),('phabricator:20140115.auth.2.expires.sql',1556231692,NULL),('phabricator:20140115.auth.3.unlimit.php',1556231692,NULL),('phabricator:20140115.legalpadsigkey.sql',1556231692,NULL),('phabricator:20140116.reporefcursor.sql',1556231692,NULL),('phabricator:20140126.diff.1.parentrevisionid.sql',1556231692,NULL),('phabricator:20140126.diff.2.repositoryphid.sql',1556231692,NULL),('phabricator:20140130.dash.1.board.sql',1556231692,NULL),('phabricator:20140130.dash.2.panel.sql',1556231692,NULL),('phabricator:20140130.dash.3.boardxaction.sql',1556231692,NULL),('phabricator:20140130.dash.4.panelxaction.sql',1556231692,NULL),('phabricator:20140130.mail.1.retry.sql',1556231692,NULL),('phabricator:20140130.mail.2.next.sql',1556231692,NULL),('phabricator:20140201.gc.1.mailsent.sql',1556231692,NULL),('phabricator:20140201.gc.2.mailreceived.sql',1556231692,NULL),('phabricator:20140205.cal.1.rename.sql',1556231692,NULL),('phabricator:20140205.cal.2.phid-col.sql',1556231692,NULL),('phabricator:20140205.cal.3.phid-mig.php',1556231692,NULL),('phabricator:20140205.cal.4.phid-key.sql',1556231692,NULL),('phabricator:20140210.herald.rule-condition-mig.php',1556231692,NULL),('phabricator:20140210.projcfield.1.blurb.php',1556231692,NULL),('phabricator:20140210.projcfield.2.piccol.sql',1556231692,NULL),('phabricator:20140210.projcfield.3.picmig.sql',1556231692,NULL),('phabricator:20140210.projcfield.4.memmig.sql',1556231692,NULL),('phabricator:20140210.projcfield.5.dropprofile.sql',1556231692,NULL),('phabricator:20140211.dx.1.nullablechangesetid.sql',1556231692,NULL),('phabricator:20140211.dx.2.migcommenttext.php',1556231692,NULL),('phabricator:20140211.dx.3.migsubscriptions.sql',1556231692,NULL),('phabricator:20140211.dx.999.drop.relationships.sql',1556231692,NULL),('phabricator:20140212.dx.1.armageddon.php',1556231692,NULL),('phabricator:20140214.clean.1.legacycommentid.sql',1556231692,NULL),('phabricator:20140214.clean.2.dropcomment.sql',1556231692,NULL),('phabricator:20140214.clean.3.dropinline.sql',1556231692,NULL),('phabricator:20140218.differentialdraft.sql',1556231692,NULL),('phabricator:20140218.passwords.1.extend.sql',1556231692,NULL),('phabricator:20140218.passwords.2.prefix.sql',1556231692,NULL),('phabricator:20140218.passwords.3.vcsextend.sql',1556231692,NULL),('phabricator:20140218.passwords.4.vcs.php',1556231692,NULL),('phabricator:20140223.bigutf8scratch.sql',1556231692,NULL),('phabricator:20140224.dxclean.1.datecommitted.sql',1556231692,NULL),('phabricator:20140226.dxcustom.1.fielddata.php',1556231692,NULL),('phabricator:20140226.dxcustom.99.drop.sql',1556231692,NULL),('phabricator:20140228.dxcomment.1.sql',1556231692,NULL),('phabricator:20140305.diviner.1.slugcol.sql',1556231692,NULL),('phabricator:20140305.diviner.2.slugkey.sql',1556231692,NULL),('phabricator:20140311.mdroplegacy.sql',1556231692,NULL),('phabricator:20140314.projectcolumn.1.statuscol.sql',1556231692,NULL),('phabricator:20140314.projectcolumn.2.statuskey.sql',1556231692,NULL),('phabricator:20140317.mupdatedkey.sql',1556231692,NULL),('phabricator:20140321.harbor.1.bxaction.sql',1556231692,NULL),('phabricator:20140321.mstatus.1.col.sql',1556231692,NULL),('phabricator:20140321.mstatus.2.mig.php',1556231692,NULL),('phabricator:20140323.harbor.1.renames.php',1556231692,NULL),('phabricator:20140323.harbor.2.message.sql',1556231692,NULL),('phabricator:20140325.push.1.event.sql',1556231692,NULL),('phabricator:20140325.push.2.eventphid.sql',1556231692,NULL),('phabricator:20140325.push.3.groups.php',1556231692,NULL),('phabricator:20140325.push.4.prune.sql',1556231692,NULL),('phabricator:20140326.project.1.colxaction.sql',1556231692,NULL),('phabricator:20140328.releeph.1.productxaction.sql',1556231692,NULL),('phabricator:20140330.flagtext.sql',1556231692,NULL),('phabricator:20140402.actionlog.sql',1556231692,NULL),('phabricator:20140410.accountsecret.1.sql',1556231692,NULL),('phabricator:20140410.accountsecret.2.php',1556231692,NULL),('phabricator:20140416.harbor.1.sql',1556231692,NULL),('phabricator:20140420.rel.1.objectphid.sql',1556231692,NULL),('phabricator:20140420.rel.2.objectmig.php',1556231692,NULL),('phabricator:20140421.slowvotecolumnsisclosed.sql',1556231692,NULL),('phabricator:20140423.session.1.hisec.sql',1556231692,NULL),('phabricator:20140427.mfactor.1.sql',1556231692,NULL),('phabricator:20140430.auth.1.partial.sql',1556231692,NULL),('phabricator:20140430.dash.1.paneltype.sql',1556231692,NULL),('phabricator:20140430.dash.2.edge.sql',1556231692,NULL),('phabricator:20140501.passphraselockcredential.sql',1556231692,NULL),('phabricator:20140501.remove.1.dlog.sql',1556231692,NULL),('phabricator:20140507.smstable.sql',1556231692,NULL),('phabricator:20140509.coverage.1.sql',1556231692,NULL),('phabricator:20140509.dashboardlayoutconfig.sql',1556231692,NULL),('phabricator:20140512.dparents.1.sql',1556231692,NULL),('phabricator:20140514.harbormasterbuildabletransaction.sql',1556231692,NULL),('phabricator:20140514.pholiomockclose.sql',1556231692,NULL),('phabricator:20140515.trust-emails.sql',1556231692,NULL),('phabricator:20140517.dxbinarycache.sql',1556231692,NULL),('phabricator:20140518.dxmorebinarycache.sql',1556231693,NULL),('phabricator:20140519.dashboardinstall.sql',1556231693,NULL),('phabricator:20140520.authtemptoken.sql',1556231693,NULL),('phabricator:20140521.projectslug.1.create.sql',1556231693,NULL),('phabricator:20140521.projectslug.2.mig.php',1556231693,NULL),('phabricator:20140522.projecticon.sql',1556231693,NULL),('phabricator:20140524.auth.mfa.cache.sql',1556231693,NULL),('phabricator:20140525.hunkmodern.sql',1556231693,NULL),('phabricator:20140615.pholioedit.1.sql',1556231693,NULL),('phabricator:20140615.pholioedit.2.sql',1556231693,NULL),('phabricator:20140617.daemon.explicit-argv.sql',1556231693,NULL),('phabricator:20140617.daemonlog.sql',1556231693,NULL),('phabricator:20140624.projcolor.1.sql',1556231693,NULL),('phabricator:20140624.projcolor.2.sql',1556231693,NULL),('phabricator:20140629.dasharchive.1.sql',1556231693,NULL),('phabricator:20140629.legalsig.1.sql',1556231693,NULL),('phabricator:20140629.legalsig.2.php',1556231693,NULL),('phabricator:20140701.legalexemption.1.sql',1556231693,NULL),('phabricator:20140701.legalexemption.2.sql',1556231693,NULL),('phabricator:20140703.legalcorp.1.sql',1556231693,NULL),('phabricator:20140703.legalcorp.2.sql',1556231693,NULL),('phabricator:20140703.legalcorp.3.sql',1556231693,NULL),('phabricator:20140703.legalcorp.4.sql',1556231693,NULL),('phabricator:20140703.legalcorp.5.sql',1556231693,NULL),('phabricator:20140704.harbormasterstep.1.sql',1556231693,NULL),('phabricator:20140704.harbormasterstep.2.sql',1556231693,NULL),('phabricator:20140704.legalpreamble.1.sql',1556231693,NULL),('phabricator:20140706.harbormasterdepend.1.php',1556231693,NULL),('phabricator:20140706.pedge.1.sql',1556231693,NULL),('phabricator:20140711.pnames.1.sql',1556231693,NULL),('phabricator:20140711.pnames.2.php',1556231693,NULL),('phabricator:20140711.workerpriority.sql',1556231693,NULL),('phabricator:20140712.projcoluniq.sql',1556231693,NULL),('phabricator:20140721.phortune.1.cart.sql',1556231693,NULL),('phabricator:20140721.phortune.2.purchase.sql',1556231693,NULL),('phabricator:20140721.phortune.3.charge.sql',1556231693,NULL),('phabricator:20140721.phortune.4.cartstatus.sql',1556231693,NULL),('phabricator:20140721.phortune.5.cstatusdefault.sql',1556231693,NULL),('phabricator:20140721.phortune.6.onetimecharge.sql',1556231693,NULL),('phabricator:20140721.phortune.7.nullmethod.sql',1556231693,NULL),('phabricator:20140722.appname.php',1556231693,NULL),('phabricator:20140722.audit.1.xactions.sql',1556231693,NULL),('phabricator:20140722.audit.2.comments.sql',1556231693,NULL),('phabricator:20140722.audit.3.miginlines.php',1556231693,NULL),('phabricator:20140722.audit.4.migtext.php',1556231693,NULL),('phabricator:20140722.renameauth.php',1556231693,NULL),('phabricator:20140723.apprenamexaction.sql',1556231693,NULL),('phabricator:20140725.audit.1.migxactions.php',1556231693,NULL),('phabricator:20140731.audit.1.subscribers.php',1556231693,NULL),('phabricator:20140731.cancdn.php',1556231693,NULL),('phabricator:20140731.harbormasterstepdesc.sql',1556231693,NULL),('phabricator:20140805.boardcol.1.sql',1556231693,NULL),('phabricator:20140805.boardcol.2.php',1556231693,NULL),('phabricator:20140807.harbormastertargettime.sql',1556231693,NULL),('phabricator:20140808.boardprop.1.sql',1556231693,NULL),('phabricator:20140808.boardprop.2.sql',1556231693,NULL),('phabricator:20140808.boardprop.3.php',1556231693,NULL),('phabricator:20140811.blob.1.sql',1556231693,NULL),('phabricator:20140811.blob.2.sql',1556231693,NULL),('phabricator:20140812.projkey.1.sql',1556231693,NULL),('phabricator:20140812.projkey.2.sql',1556231693,NULL),('phabricator:20140814.passphrasecredentialconduit.sql',1556231693,NULL),('phabricator:20140815.cancdncase.php',1556231693,NULL),('phabricator:20140818.harbormasterindex.1.sql',1556231693,NULL),('phabricator:20140821.harbormasterbuildgen.1.sql',1556231693,NULL),('phabricator:20140822.daemonenvhash.sql',1556231693,NULL),('phabricator:20140902.almanacdevice.1.sql',1556231693,NULL),('phabricator:20140904.macroattach.php',1556231693,NULL),('phabricator:20140911.fund.1.initiative.sql',1556231693,NULL),('phabricator:20140911.fund.2.xaction.sql',1556231693,NULL),('phabricator:20140911.fund.3.edge.sql',1556231693,NULL),('phabricator:20140911.fund.4.backer.sql',1556231693,NULL),('phabricator:20140911.fund.5.backxaction.sql',1556231693,NULL),('phabricator:20140914.betaproto.php',1556231693,NULL),('phabricator:20140917.project.canlock.sql',1556231693,NULL),('phabricator:20140918.schema.1.dropaudit.sql',1556231693,NULL),('phabricator:20140918.schema.2.dropauditinline.sql',1556231693,NULL),('phabricator:20140918.schema.3.wipecache.sql',1556231693,NULL),('phabricator:20140918.schema.4.cachetype.sql',1556231693,NULL),('phabricator:20140918.schema.5.slowvote.sql',1556231693,NULL),('phabricator:20140919.schema.01.calstatus.sql',1556231693,NULL),('phabricator:20140919.schema.02.calname.sql',1556231693,NULL),('phabricator:20140919.schema.03.dropaux.sql',1556231693,NULL),('phabricator:20140919.schema.04.droptaskproj.sql',1556231693,NULL),('phabricator:20140926.schema.01.droprelev.sql',1556231693,NULL),('phabricator:20140926.schema.02.droprelreqev.sql',1556231693,NULL),('phabricator:20140926.schema.03.dropldapinfo.sql',1556231693,NULL),('phabricator:20140926.schema.04.dropoauthinfo.sql',1556231693,NULL),('phabricator:20140926.schema.05.dropprojaffil.sql',1556231693,NULL),('phabricator:20140926.schema.06.dropsubproject.sql',1556231693,NULL),('phabricator:20140926.schema.07.droppondcom.sql',1556231693,NULL),('phabricator:20140927.schema.01.dropsearchq.sql',1556231693,NULL),('phabricator:20140927.schema.02.pholio1.sql',1556231693,NULL),('phabricator:20140927.schema.03.pholio2.sql',1556231693,NULL),('phabricator:20140927.schema.04.pholio3.sql',1556231693,NULL),('phabricator:20140927.schema.05.phragment1.sql',1556231693,NULL),('phabricator:20140927.schema.06.releeph1.sql',1556231693,NULL),('phabricator:20141001.schema.01.version.sql',1556231693,NULL),('phabricator:20141001.schema.02.taskmail.sql',1556231693,NULL),('phabricator:20141002.schema.01.liskcounter.sql',1556231693,NULL),('phabricator:20141002.schema.02.draftnull.sql',1556231693,NULL),('phabricator:20141004.currency.01.sql',1556231693,NULL),('phabricator:20141004.currency.02.sql',1556231693,NULL),('phabricator:20141004.currency.03.sql',1556231693,NULL),('phabricator:20141004.currency.04.sql',1556231693,NULL),('phabricator:20141004.currency.05.sql',1556231693,NULL),('phabricator:20141004.currency.06.sql',1556231693,NULL),('phabricator:20141004.harborliskcounter.sql',1556231693,NULL),('phabricator:20141005.phortuneproduct.sql',1556231694,NULL),('phabricator:20141006.phortunecart.sql',1556231694,NULL),('phabricator:20141006.phortunemerchant.sql',1556231694,NULL),('phabricator:20141006.phortunemerchantx.sql',1556231694,NULL),('phabricator:20141007.fundmerchant.sql',1556231694,NULL),('phabricator:20141007.fundrisks.sql',1556231694,NULL),('phabricator:20141007.fundtotal.sql',1556231694,NULL),('phabricator:20141007.phortunecartmerchant.sql',1556231694,NULL),('phabricator:20141007.phortunecharge.sql',1556231694,NULL),('phabricator:20141007.phortunepayment.sql',1556231694,NULL),('phabricator:20141007.phortuneprovider.sql',1556231694,NULL),('phabricator:20141007.phortuneproviderx.sql',1556231694,NULL),('phabricator:20141008.phortunemerchdesc.sql',1556231694,NULL),('phabricator:20141008.phortuneprovdis.sql',1556231694,NULL),('phabricator:20141008.phortunerefund.sql',1556231694,NULL),('phabricator:20141010.fundmailkey.sql',1556231694,NULL),('phabricator:20141011.phortunemerchedit.sql',1556231694,NULL),('phabricator:20141012.phortunecartxaction.sql',1556231694,NULL),('phabricator:20141013.phortunecartkey.sql',1556231694,NULL),('phabricator:20141016.almanac.device.sql',1556231694,NULL),('phabricator:20141016.almanac.dxaction.sql',1556231694,NULL),('phabricator:20141016.almanac.interface.sql',1556231694,NULL),('phabricator:20141016.almanac.network.sql',1556231694,NULL),('phabricator:20141016.almanac.nxaction.sql',1556231694,NULL),('phabricator:20141016.almanac.service.sql',1556231694,NULL),('phabricator:20141016.almanac.sxaction.sql',1556231694,NULL),('phabricator:20141017.almanac.binding.sql',1556231694,NULL),('phabricator:20141017.almanac.bxaction.sql',1556231694,NULL),('phabricator:20141025.phriction.1.xaction.sql',1556231694,NULL),('phabricator:20141025.phriction.2.xaction.sql',1556231694,NULL),('phabricator:20141025.phriction.mailkey.sql',1556231694,NULL),('phabricator:20141103.almanac.1.delprop.sql',1556231694,NULL),('phabricator:20141103.almanac.2.addprop.sql',1556231694,NULL),('phabricator:20141104.almanac.3.edge.sql',1556231694,NULL),('phabricator:20141105.ssh.1.rename.sql',1556231694,NULL),('phabricator:20141106.dropold.sql',1556231694,NULL),('phabricator:20141106.uniqdrafts.php',1556231694,NULL),('phabricator:20141107.phriction.policy.1.sql',1556231694,NULL),('phabricator:20141107.phriction.policy.2.php',1556231694,NULL),('phabricator:20141107.phriction.popkeys.php',1556231694,NULL),('phabricator:20141107.ssh.1.colname.sql',1556231694,NULL),('phabricator:20141107.ssh.2.keyhash.sql',1556231694,NULL),('phabricator:20141107.ssh.3.keyindex.sql',1556231694,NULL),('phabricator:20141107.ssh.4.keymig.php',1556231694,NULL),('phabricator:20141107.ssh.5.indexnull.sql',1556231694,NULL),('phabricator:20141107.ssh.6.indexkey.sql',1556231694,NULL),('phabricator:20141107.ssh.7.colnull.sql',1556231694,NULL),('phabricator:20141113.auditdupes.php',1556231694,NULL),('phabricator:20141118.diffxaction.sql',1556231694,NULL),('phabricator:20141119.commitpedge.sql',1556231694,NULL),('phabricator:20141119.differential.diff.policy.sql',1556231694,NULL),('phabricator:20141119.sshtrust.sql',1556231694,NULL),('phabricator:20141123.taskpriority.1.sql',1556231694,NULL),('phabricator:20141123.taskpriority.2.sql',1556231694,NULL),('phabricator:20141210.maniphestsubscribersmig.1.sql',1556231694,NULL),('phabricator:20141210.maniphestsubscribersmig.2.sql',1556231694,NULL),('phabricator:20141210.reposervice.sql',1556231694,NULL),('phabricator:20141212.conduittoken.sql',1556231694,NULL),('phabricator:20141215.almanacservicetype.sql',1556231694,NULL),('phabricator:20141217.almanacdevicelock.sql',1556231694,NULL),('phabricator:20141217.almanaclock.sql',1556231694,NULL),('phabricator:20141218.maniphestcctxn.php',1556231694,NULL),('phabricator:20141222.maniphestprojtxn.php',1556231694,NULL),('phabricator:20141223.daemonloguser.sql',1556231694,NULL),('phabricator:20141223.daemonobjectphid.sql',1556231694,NULL),('phabricator:20141230.pasteeditpolicycolumn.sql',1556231694,NULL),('phabricator:20141230.pasteeditpolicyexisting.sql',1556231694,NULL),('phabricator:20150102.policyname.php',1556231694,NULL),('phabricator:20150102.tasksubscriber.sql',1556231694,NULL),('phabricator:20150105.conpsearch.sql',1556231694,NULL),('phabricator:20150114.oauthserver.client.policy.sql',1556231694,NULL),('phabricator:20150115.applicationemails.sql',1556231694,NULL),('phabricator:20150115.trigger.1.sql',1556231694,NULL),('phabricator:20150115.trigger.2.sql',1556231694,NULL),('phabricator:20150116.maniphestapplicationemails.php',1556231694,NULL),('phabricator:20150120.maniphestdefaultauthor.php',1556231694,NULL),('phabricator:20150124.subs.1.sql',1556231694,NULL),('phabricator:20150129.pastefileapplicationemails.php',1556231694,NULL),('phabricator:20150130.phortune.1.subphid.sql',1556231694,NULL),('phabricator:20150130.phortune.2.subkey.sql',1556231695,NULL),('phabricator:20150131.phortune.1.defaultpayment.sql',1556231695,NULL),('phabricator:20150205.authprovider.autologin.sql',1556231695,NULL),('phabricator:20150205.daemonenv.sql',1556231695,NULL),('phabricator:20150209.invite.sql',1556231695,NULL),('phabricator:20150209.oauthclient.trust.sql',1556231695,NULL),('phabricator:20150210.invitephid.sql',1556231695,NULL),('phabricator:20150212.legalpad.session.1.sql',1556231695,NULL),('phabricator:20150212.legalpad.session.2.sql',1556231695,NULL),('phabricator:20150219.scratch.nonmutable.sql',1556231695,NULL),('phabricator:20150223.daemon.1.id.sql',1556231695,NULL),('phabricator:20150223.daemon.2.idlegacy.sql',1556231695,NULL),('phabricator:20150223.daemon.3.idkey.sql',1556231695,NULL),('phabricator:20150312.filechunk.1.sql',1556231695,NULL),('phabricator:20150312.filechunk.2.sql',1556231695,NULL),('phabricator:20150312.filechunk.3.sql',1556231695,NULL),('phabricator:20150317.conpherence.isroom.1.sql',1556231695,NULL),('phabricator:20150317.conpherence.isroom.2.sql',1556231695,NULL),('phabricator:20150317.conpherence.policy.sql',1556231695,NULL),('phabricator:20150410.nukeruleedit.sql',1556231695,NULL),('phabricator:20150420.invoice.1.sql',1556231695,NULL),('phabricator:20150420.invoice.2.sql',1556231695,NULL),('phabricator:20150425.isclosed.sql',1556231695,NULL),('phabricator:20150427.calendar.1.edge.sql',1556231695,NULL),('phabricator:20150427.calendar.1.xaction.sql',1556231695,NULL),('phabricator:20150427.calendar.2.xaction.sql',1556231695,NULL),('phabricator:20150428.calendar.1.iscancelled.sql',1556231695,NULL),('phabricator:20150428.calendar.1.name.sql',1556231695,NULL),('phabricator:20150429.calendar.1.invitee.sql',1556231695,NULL),('phabricator:20150430.calendar.1.policies.sql',1556231695,NULL),('phabricator:20150430.multimeter.1.sql',1556231695,NULL),('phabricator:20150430.multimeter.2.host.sql',1556231695,NULL),('phabricator:20150430.multimeter.3.viewer.sql',1556231695,NULL),('phabricator:20150430.multimeter.4.context.sql',1556231695,NULL),('phabricator:20150430.multimeter.5.label.sql',1556231695,NULL),('phabricator:20150501.calendar.1.reply.sql',1556231695,NULL),('phabricator:20150501.calendar.2.reply.php',1556231695,NULL),('phabricator:20150501.conpherencepics.sql',1556231695,NULL),('phabricator:20150503.repositorysymbols.1.sql',1556231695,NULL),('phabricator:20150503.repositorysymbols.2.php',1556231695,NULL),('phabricator:20150503.repositorysymbols.3.sql',1556231695,NULL),('phabricator:20150504.symbolsproject.1.php',1556231695,NULL),('phabricator:20150504.symbolsproject.2.sql',1556231695,NULL),('phabricator:20150506.calendarunnamedevents.1.php',1556231695,NULL),('phabricator:20150507.calendar.1.isallday.sql',1556231695,NULL),('phabricator:20150513.user.cache.1.sql',1556231695,NULL),('phabricator:20150514.calendar.status.sql',1556231695,NULL),('phabricator:20150514.phame.blog.xaction.sql',1556231695,NULL),('phabricator:20150514.user.cache.2.sql',1556231695,NULL),('phabricator:20150515.phame.post.xaction.sql',1556231695,NULL),('phabricator:20150515.project.mailkey.1.sql',1556231695,NULL),('phabricator:20150515.project.mailkey.2.php',1556231695,NULL),('phabricator:20150519.calendar.calendaricon.sql',1556231695,NULL),('phabricator:20150521.releephrepository.sql',1556231695,NULL),('phabricator:20150525.diff.hidden.1.sql',1556231695,NULL),('phabricator:20150526.owners.mailkey.1.sql',1556231695,NULL),('phabricator:20150526.owners.mailkey.2.php',1556231695,NULL),('phabricator:20150526.owners.xaction.sql',1556231695,NULL),('phabricator:20150527.calendar.recurringevents.sql',1556231695,NULL),('phabricator:20150601.spaces.1.namespace.sql',1556231695,NULL),('phabricator:20150601.spaces.2.xaction.sql',1556231695,NULL),('phabricator:20150602.mlist.1.sql',1556231695,NULL),('phabricator:20150602.mlist.2.php',1556231695,NULL),('phabricator:20150604.spaces.1.sql',1556231695,NULL),('phabricator:20150605.diviner.edges.sql',1556231695,NULL),('phabricator:20150605.diviner.editPolicy.sql',1556231695,NULL),('phabricator:20150605.diviner.xaction.sql',1556231695,NULL),('phabricator:20150606.mlist.1.php',1556231695,NULL),('phabricator:20150609.inline.sql',1556231695,NULL),('phabricator:20150609.spaces.1.pholio.sql',1556231695,NULL),('phabricator:20150609.spaces.2.maniphest.sql',1556231695,NULL),('phabricator:20150610.spaces.1.desc.sql',1556231695,NULL),('phabricator:20150610.spaces.2.edge.sql',1556231695,NULL),('phabricator:20150610.spaces.3.archive.sql',1556231695,NULL),('phabricator:20150611.spaces.1.mailxaction.sql',1556231695,NULL),('phabricator:20150611.spaces.2.appmail.sql',1556231695,NULL),('phabricator:20150616.divinerrepository.sql',1556231695,NULL),('phabricator:20150617.harbor.1.lint.sql',1556231695,NULL),('phabricator:20150617.harbor.2.unit.sql',1556231695,NULL),('phabricator:20150618.harbor.1.planauto.sql',1556231695,NULL),('phabricator:20150618.harbor.2.stepauto.sql',1556231695,NULL),('phabricator:20150618.harbor.3.buildauto.sql',1556231695,NULL),('phabricator:20150619.conpherencerooms.1.sql',1556231695,NULL),('phabricator:20150619.conpherencerooms.2.sql',1556231695,NULL),('phabricator:20150619.conpherencerooms.3.sql',1556231695,NULL),('phabricator:20150621.phrase.1.sql',1556231695,NULL),('phabricator:20150621.phrase.2.sql',1556231695,NULL),('phabricator:20150622.bulk.1.job.sql',1556231695,NULL),('phabricator:20150622.bulk.2.task.sql',1556231695,NULL),('phabricator:20150622.bulk.3.xaction.sql',1556231695,NULL),('phabricator:20150622.bulk.4.edge.sql',1556231696,NULL),('phabricator:20150622.metamta.1.phid-col.sql',1556231696,NULL),('phabricator:20150622.metamta.2.phid-mig.php',1556231696,NULL),('phabricator:20150622.metamta.3.phid-key.sql',1556231696,NULL),('phabricator:20150622.metamta.4.actor-phid-col.sql',1556231696,NULL),('phabricator:20150622.metamta.5.actor-phid-mig.php',1556231696,NULL),('phabricator:20150622.metamta.6.actor-phid-key.sql',1556231696,NULL),('phabricator:20150624.spaces.1.repo.sql',1556231696,NULL),('phabricator:20150626.spaces.1.calendar.sql',1556231696,NULL),('phabricator:20150630.herald.1.sql',1556231696,NULL),('phabricator:20150630.herald.2.sql',1556231696,NULL),('phabricator:20150701.herald.1.sql',1556231696,NULL),('phabricator:20150701.herald.2.sql',1556231696,NULL),('phabricator:20150702.spaces.1.slowvote.sql',1556231696,NULL),('phabricator:20150706.herald.1.sql',1556231696,NULL),('phabricator:20150707.herald.1.sql',1556231696,NULL),('phabricator:20150708.arcanistproject.sql',1556231696,NULL),('phabricator:20150708.herald.1.sql',1556231696,NULL),('phabricator:20150708.herald.2.sql',1556231696,NULL),('phabricator:20150708.herald.3.sql',1556231696,NULL),('phabricator:20150712.badges.1.sql',1556231696,NULL),('phabricator:20150714.spaces.countdown.1.sql',1556231696,NULL),('phabricator:20150717.herald.1.sql',1556231696,NULL),('phabricator:20150719.countdown.1.sql',1556231696,NULL),('phabricator:20150719.countdown.2.sql',1556231696,NULL),('phabricator:20150719.countdown.3.sql',1556231696,NULL),('phabricator:20150721.phurl.1.url.sql',1556231696,NULL),('phabricator:20150721.phurl.2.xaction.sql',1556231696,NULL),('phabricator:20150721.phurl.3.xactioncomment.sql',1556231696,NULL),('phabricator:20150721.phurl.4.url.sql',1556231696,NULL),('phabricator:20150721.phurl.5.edge.sql',1556231696,NULL),('phabricator:20150721.phurl.6.alias.sql',1556231696,NULL),('phabricator:20150721.phurl.7.authorphid.sql',1556231696,NULL),('phabricator:20150722.dashboard.1.sql',1556231696,NULL),('phabricator:20150722.dashboard.2.sql',1556231696,NULL),('phabricator:20150723.countdown.1.sql',1556231696,NULL),('phabricator:20150724.badges.comments.1.sql',1556231696,NULL),('phabricator:20150724.countdown.comments.1.sql',1556231696,NULL),('phabricator:20150725.badges.mailkey.1.sql',1556231696,NULL),('phabricator:20150725.badges.mailkey.2.php',1556231696,NULL),('phabricator:20150725.badges.viewpolicy.3.sql',1556231696,NULL),('phabricator:20150725.countdown.mailkey.1.sql',1556231696,NULL),('phabricator:20150725.countdown.mailkey.2.php',1556231696,NULL),('phabricator:20150725.slowvote.mailkey.1.sql',1556231696,NULL),('phabricator:20150725.slowvote.mailkey.2.php',1556231696,NULL),('phabricator:20150727.heraldaction.1.sql',1556231696,NULL),('phabricator:20150730.herald.1.sql',1556231696,NULL),('phabricator:20150730.herald.2.sql',1556231696,NULL),('phabricator:20150730.herald.3.sql',1556231696,NULL),('phabricator:20150730.herald.4.sql',1556231696,NULL),('phabricator:20150730.herald.5.sql',1556231696,NULL),('phabricator:20150730.herald.6.sql',1556231696,NULL),('phabricator:20150730.herald.7.sql',1556231696,NULL),('phabricator:20150803.herald.1.sql',1556231696,NULL),('phabricator:20150803.herald.2.sql',1556231696,NULL),('phabricator:20150804.ponder.answer.mailkey.1.sql',1556231696,NULL),('phabricator:20150804.ponder.answer.mailkey.2.php',1556231696,NULL),('phabricator:20150804.ponder.question.1.sql',1556231696,NULL),('phabricator:20150804.ponder.question.2.sql',1556231696,NULL),('phabricator:20150804.ponder.question.3.sql',1556231696,NULL),('phabricator:20150804.ponder.spaces.4.sql',1556231696,NULL),('phabricator:20150805.paste.status.1.sql',1556231696,NULL),('phabricator:20150805.paste.status.2.sql',1556231696,NULL),('phabricator:20150806.ponder.answer.1.sql',1556231696,NULL),('phabricator:20150806.ponder.editpolicy.2.sql',1556231696,NULL),('phabricator:20150806.ponder.status.1.sql',1556231696,NULL),('phabricator:20150806.ponder.status.2.sql',1556231696,NULL),('phabricator:20150806.ponder.status.3.sql',1556231696,NULL),('phabricator:20150808.ponder.vote.1.sql',1556231696,NULL),('phabricator:20150808.ponder.vote.2.sql',1556231696,NULL),('phabricator:20150812.ponder.answer.1.sql',1556231696,NULL),('phabricator:20150812.ponder.answer.2.sql',1556231696,NULL),('phabricator:20150814.harbormater.artifact.phid.sql',1556231696,NULL),('phabricator:20150815.owners.status.1.sql',1556231696,NULL),('phabricator:20150815.owners.status.2.sql',1556231696,NULL),('phabricator:20150823.nuance.queue.1.sql',1556231696,NULL),('phabricator:20150823.nuance.queue.2.sql',1556231696,NULL),('phabricator:20150823.nuance.queue.3.sql',1556231696,NULL),('phabricator:20150823.nuance.queue.4.sql',1556231696,NULL),('phabricator:20150828.ponder.wiki.1.sql',1556231696,NULL),('phabricator:20150829.ponder.dupe.1.sql',1556231696,NULL),('phabricator:20150904.herald.1.sql',1556231696,NULL),('phabricator:20150906.mailinglist.sql',1556231696,NULL),('phabricator:20150910.owners.custom.1.sql',1556231696,NULL),('phabricator:20150916.drydock.slotlocks.1.sql',1556231696,NULL),('phabricator:20150922.drydock.commands.1.sql',1556231696,NULL),('phabricator:20150923.drydock.resourceid.1.sql',1556231696,NULL),('phabricator:20150923.drydock.resourceid.2.sql',1556231696,NULL),('phabricator:20150923.drydock.resourceid.3.sql',1556231696,NULL),('phabricator:20150923.drydock.taskid.1.sql',1556231696,NULL),('phabricator:20150924.drydock.disable.1.sql',1556231696,NULL),('phabricator:20150924.drydock.status.1.sql',1556231696,NULL),('phabricator:20150928.drydock.rexpire.1.sql',1556231696,NULL),('phabricator:20150930.drydock.log.1.sql',1556231696,NULL),('phabricator:20151001.drydock.rname.1.sql',1556231696,NULL),('phabricator:20151002.dashboard.status.1.sql',1556231696,NULL),('phabricator:20151002.harbormaster.bparam.1.sql',1556231696,NULL),('phabricator:20151009.drydock.auth.1.sql',1556231696,NULL),('phabricator:20151010.drydock.auth.2.sql',1556231696,NULL),('phabricator:20151013.drydock.op.1.sql',1556231696,NULL),('phabricator:20151023.harborpolicy.1.sql',1556231696,NULL),('phabricator:20151023.harborpolicy.2.php',1556231696,NULL),('phabricator:20151023.patchduration.sql',1556231697,141072),('phabricator:20151030.harbormaster.initiator.sql',1556231697,14355),('phabricator:20151106.editengine.1.table.sql',1556231697,7000),('phabricator:20151106.editengine.2.xactions.sql',1556231697,6327),('phabricator:20151106.phame.post.mailkey.1.sql',1556231697,13453),('phabricator:20151106.phame.post.mailkey.2.php',1556231697,1570),('phabricator:20151107.phame.blog.mailkey.1.sql',1556231697,11087),('phabricator:20151107.phame.blog.mailkey.2.php',1556231697,970),('phabricator:20151108.phame.blog.joinpolicy.sql',1556231697,11189),('phabricator:20151108.xhpast.stderr.sql',1556231697,18926),('phabricator:20151109.phame.post.comments.1.sql',1556231697,7158),('phabricator:20151109.repository.coverage.1.sql',1556231697,1260),('phabricator:20151109.xhpast.db.1.sql',1556231697,3950),('phabricator:20151109.xhpast.db.2.sql',1556231697,1156),('phabricator:20151110.daemonenvhash.sql',1556231697,24270),('phabricator:20151111.phame.blog.archive.1.sql',1556231697,11808),('phabricator:20151111.phame.blog.archive.2.sql',1556231697,570),('phabricator:20151112.herald.edge.sql',1556231697,10237),('phabricator:20151116.owners.edge.sql',1556231697,10178),('phabricator:20151128.phame.blog.picture.1.sql',1556231697,12092),('phabricator:20151130.phurl.mailkey.1.sql',1556231697,9727),('phabricator:20151130.phurl.mailkey.2.php',1556231697,1287),('phabricator:20151202.versioneddraft.1.sql',1556231697,5191),('phabricator:20151207.editengine.1.sql',1556231697,48281),('phabricator:20151210.land.1.refphid.sql',1556231697,9677),('phabricator:20151210.land.2.refphid.php',1556231697,629),('phabricator:20151215.phame.1.autotitle.sql',1556231697,20604),('phabricator:20151218.key.1.keyphid.sql',1556231697,13167),('phabricator:20151218.key.2.keyphid.php',1556231697,423),('phabricator:20151219.proj.01.prislug.sql',1556231697,13742),('phabricator:20151219.proj.02.prislugkey.sql',1556231697,8362),('phabricator:20151219.proj.03.copyslug.sql',1556231697,517),('phabricator:20151219.proj.04.dropslugkey.sql',1556231697,6993),('phabricator:20151219.proj.05.dropslug.sql',1556231697,14034),('phabricator:20151219.proj.06.defaultpolicy.php',1556231697,1187),('phabricator:20151219.proj.07.viewnull.sql',1556231697,17899),('phabricator:20151219.proj.08.editnull.sql',1556231697,17020),('phabricator:20151219.proj.09.joinnull.sql',1556231697,17501),('phabricator:20151219.proj.10.subcolumns.sql',1556231697,77351),('phabricator:20151219.proj.11.subprojectphids.sql',1556231697,14306),('phabricator:20151221.search.1.version.sql',1556231697,5434),('phabricator:20151221.search.2.ownersngrams.sql',1556231697,5494),('phabricator:20151221.search.3.reindex.php',1556231697,84),('phabricator:20151223.proj.01.paths.sql',1556231697,15641),('phabricator:20151223.proj.02.depths.sql',1556231697,15239),('phabricator:20151223.proj.03.pathkey.sql',1556231697,9414),('phabricator:20151223.proj.04.keycol.sql',1556231697,16788),('phabricator:20151223.proj.05.updatekeys.php',1556231697,483),('phabricator:20151223.proj.06.uniq.sql',1556231697,10101),('phabricator:20151226.reop.1.sql',1556231697,12605),('phabricator:20151227.proj.01.materialize.sql',1556231697,586),('phabricator:20151231.proj.01.icon.php',1556231697,2511),('phabricator:20160102.badges.award.sql',1556231697,6329),('phabricator:20160110.repo.01.slug.sql',1556231697,20421),('phabricator:20160110.repo.02.slug.php',1556231697,678),('phabricator:20160111.repo.01.slugx.sql',1556231697,1338),('phabricator:20160112.repo.01.uri.sql',1556231697,5759),('phabricator:20160112.repo.02.uri.index.php',1556231697,105),('phabricator:20160113.propanel.1.storage.sql',1556231697,6417),('phabricator:20160113.propanel.2.xaction.sql',1556231697,7222),('phabricator:20160119.project.1.silence.sql',1556231697,547),('phabricator:20160122.project.1.boarddefault.php',1556231697,759),('phabricator:20160124.people.1.icon.sql',1556231697,10389),('phabricator:20160124.people.2.icondefault.sql',1556231697,597),('phabricator:20160128.repo.1.pull.sql',1556231697,6188),('phabricator:20160201.revision.properties.1.sql',1556231697,13671),('phabricator:20160201.revision.properties.2.sql',1556231697,582),('phabricator:20160202.board.1.proxy.sql',1556231697,11473),('phabricator:20160202.ipv6.1.sql',1556231697,29431),('phabricator:20160202.ipv6.2.php',1556231697,1039),('phabricator:20160206.cover.1.sql',1556231697,16645),('phabricator:20160208.task.1.sql',1556231697,17354),('phabricator:20160208.task.2.sql',1556231697,28687),('phabricator:20160208.task.3.sql',1556231697,21722),('phabricator:20160212.proj.1.sql',1556231697,18838),('phabricator:20160212.proj.2.sql',1556231697,682),('phabricator:20160215.owners.policy.1.sql',1556231698,13159),('phabricator:20160215.owners.policy.2.sql',1556231698,13532),('phabricator:20160215.owners.policy.3.sql',1556231698,781),('phabricator:20160215.owners.policy.4.sql',1556231698,575),('phabricator:20160218.callsigns.1.sql',1556231698,18754),('phabricator:20160221.almanac.1.devicen.sql',1556231698,5402),('phabricator:20160221.almanac.2.devicei.php',1556231698,86),('phabricator:20160221.almanac.3.servicen.sql',1556231698,5514),('phabricator:20160221.almanac.4.servicei.php',1556231698,88),('phabricator:20160221.almanac.5.networkn.sql',1556231698,5797),('phabricator:20160221.almanac.6.networki.php',1556231698,98),('phabricator:20160221.almanac.7.namespacen.sql',1556231698,6222),('phabricator:20160221.almanac.8.namespace.sql',1556231698,6967),('phabricator:20160221.almanac.9.namespacex.sql',1556231698,6258),('phabricator:20160222.almanac.1.properties.php',1556231698,1785),('phabricator:20160223.almanac.1.bound.sql',1556231698,12636),('phabricator:20160223.almanac.2.lockbind.sql',1556231698,555),('phabricator:20160223.almanac.3.devicelock.sql',1556231698,12370),('phabricator:20160223.almanac.4.servicelock.sql',1556231698,12403),('phabricator:20160223.paste.fileedges.php',1556231698,563),('phabricator:20160225.almanac.1.disablebinding.sql',1556231698,13239),('phabricator:20160225.almanac.2.stype.sql',1556231698,5306),('phabricator:20160225.almanac.3.stype.php',1556231698,854),('phabricator:20160227.harbormaster.1.plann.sql',1556231698,5517),('phabricator:20160227.harbormaster.2.plani.php',1556231698,85),('phabricator:20160303.drydock.1.bluen.sql',1556231698,5916),('phabricator:20160303.drydock.2.bluei.php',1556231698,84),('phabricator:20160303.drydock.3.edge.sql',1556231698,9299),('phabricator:20160308.nuance.01.disabled.sql',1556231698,11938),('phabricator:20160308.nuance.02.cursordata.sql',1556231698,5933),('phabricator:20160308.nuance.03.sourcen.sql',1556231698,5421),('phabricator:20160308.nuance.04.sourcei.php',1556231698,84),('phabricator:20160308.nuance.05.sourcename.sql',1556231698,14051),('phabricator:20160308.nuance.06.label.sql',1556231698,14773),('phabricator:20160308.nuance.07.itemtype.sql',1556231698,12745),('phabricator:20160308.nuance.08.itemkey.sql',1556231698,12490),('phabricator:20160308.nuance.09.itemcontainer.sql',1556231698,14099),('phabricator:20160308.nuance.10.itemkeyu.sql',1556231698,525),('phabricator:20160308.nuance.11.requestor.sql',1556231698,16661),('phabricator:20160308.nuance.12.queue.sql',1556231698,12884),('phabricator:20160316.lfs.01.token.resource.sql',1556231698,14175),('phabricator:20160316.lfs.02.token.user.sql',1556231698,10063),('phabricator:20160316.lfs.03.token.properties.sql',1556231698,10329),('phabricator:20160316.lfs.04.token.default.sql',1556231698,508),('phabricator:20160317.lfs.01.ref.sql',1556231698,5342),('phabricator:20160321.nuance.01.taskbridge.sql',1556231698,17760),('phabricator:20160322.nuance.01.itemcommand.sql',1556231698,4975),('phabricator:20160323.badgemigrate.sql',1556231698,1649),('phabricator:20160329.nuance.01.requestor.sql',1556231698,3782),('phabricator:20160329.nuance.02.requestorsource.sql',1556231698,4055),('phabricator:20160329.nuance.03.requestorxaction.sql',1556231698,4785),('phabricator:20160329.nuance.04.requestorcomment.sql',1556231698,4420),('phabricator:20160330.badges.migratequality.sql',1556231698,15822),('phabricator:20160330.badges.qualityxaction.mig.sql',1556231698,2799),('phabricator:20160331.fund.comments.1.sql',1556231698,6871),('phabricator:20160404.oauth.1.xaction.sql',1556231698,6721),('phabricator:20160405.oauth.2.disable.sql',1556231698,10930),('phabricator:20160406.badges.ngrams.php',1556231698,97),('phabricator:20160406.badges.ngrams.sql',1556231698,6525),('phabricator:20160406.columns.1.php',1556231698,500),('phabricator:20160411.repo.1.version.sql',1556231698,5519),('phabricator:20160418.repouri.1.sql',1556231698,6074),('phabricator:20160418.repouri.2.sql',1556231698,11525),('phabricator:20160418.repoversion.1.sql',1556231698,10689),('phabricator:20160419.pushlog.1.sql',1556231698,14353),('phabricator:20160424.locks.1.sql',1556231698,10204),('phabricator:20160426.searchedge.sql',1556231698,9947),('phabricator:20160428.repo.1.urixaction.sql',1556231698,7021),('phabricator:20160503.repo.01.lpath.sql',1556231698,13307),('phabricator:20160503.repo.02.lpathkey.sql',1556231698,8490),('phabricator:20160503.repo.03.lpathmigrate.php',1556231698,504),('phabricator:20160503.repo.04.mirrormigrate.php',1556231698,850),('phabricator:20160503.repo.05.urimigrate.php',1556231698,424),('phabricator:20160510.repo.01.uriindex.php',1556231698,4595),('phabricator:20160513.owners.01.autoreview.sql',1556231698,10941),('phabricator:20160513.owners.02.autoreviewnone.sql',1556231698,564),('phabricator:20160516.owners.01.dominion.sql',1556231698,10783),('phabricator:20160516.owners.02.dominionstrong.sql',1556231698,572),('phabricator:20160517.oauth.01.edge.sql',1556231698,10687),('phabricator:20160518.ssh.01.activecol.sql',1556231698,10789),('phabricator:20160518.ssh.02.activeval.sql',1556231698,581),('phabricator:20160518.ssh.03.activekey.sql',1556231698,6783),('phabricator:20160519.ssh.01.xaction.sql',1556231698,6533),('phabricator:20160531.pref.01.xaction.sql',1556231698,7117),('phabricator:20160531.pref.02.datecreatecol.sql',1556231698,9742),('phabricator:20160531.pref.03.datemodcol.sql',1556231698,9161),('phabricator:20160531.pref.04.datecreateval.sql',1556231698,581),('phabricator:20160531.pref.05.datemodval.sql',1556231698,500),('phabricator:20160531.pref.06.phidcol.sql',1556231698,9802),('phabricator:20160531.pref.07.phidval.php',1556231698,812),('phabricator:20160601.user.01.cache.sql',1556231698,7441),('phabricator:20160601.user.02.copyprefs.php',1556231698,1761),('phabricator:20160601.user.03.removetime.sql',1556231698,15650),('phabricator:20160601.user.04.removetranslation.sql',1556231698,15109),('phabricator:20160601.user.05.removesex.sql',1556231698,14245),('phabricator:20160603.user.01.removedcenabled.sql',1556231698,13434),('phabricator:20160603.user.02.removedctab.sql',1556231698,14889),('phabricator:20160603.user.03.removedcvisible.sql',1556231698,14290),('phabricator:20160604.user.01.stringmailprefs.php',1556231698,605),('phabricator:20160604.user.02.removeimagecache.sql',1556231698,13598),('phabricator:20160605.user.01.prefnulluser.sql',1556231698,13603),('phabricator:20160605.user.02.prefbuiltin.sql',1556231698,9726),('phabricator:20160605.user.03.builtinunique.sql',1556231698,5808),('phabricator:20160616.phame.blog.header.1.sql',1556231698,10765),('phabricator:20160616.repo.01.oldref.sql',1556231698,5571),('phabricator:20160617.harbormaster.01.arelease.sql',1556231698,11995),('phabricator:20160618.phame.blog.subtitle.sql',1556231698,11187),('phabricator:20160620.phame.blog.parentdomain.2.sql',1556231698,11609),('phabricator:20160620.phame.blog.parentsite.1.sql',1556231698,13040),('phabricator:20160623.phame.blog.fulldomain.1.sql',1556231698,12008),('phabricator:20160623.phame.blog.fulldomain.2.sql',1556231698,564),('phabricator:20160623.phame.blog.fulldomain.3.sql',1556231698,1211),('phabricator:20160706.phame.blog.parentdomain.2.sql',1556231698,12418),('phabricator:20160706.phame.blog.parentsite.1.sql',1556231699,13036),('phabricator:20160707.calendar.01.stub.sql',1556231699,12754),('phabricator:20160711.files.01.builtin.sql',1556231699,15129),('phabricator:20160711.files.02.builtinkey.sql',1556231699,8836),('phabricator:20160713.event.01.host.sql',1556231699,15511),('phabricator:20160715.event.01.alldayfrom.sql',1556231699,14131),('phabricator:20160715.event.02.alldayto.sql',1556231699,12699),('phabricator:20160715.event.03.allday.php',1556231699,86),('phabricator:20160720.calendar.invitetxn.php',1556231699,1319),('phabricator:20160721.pack.01.pub.sql',1556231699,5812),('phabricator:20160721.pack.02.pubxaction.sql',1556231699,6139),('phabricator:20160721.pack.03.edge.sql',1556231699,10806),('phabricator:20160721.pack.04.pkg.sql',1556231699,6295),('phabricator:20160721.pack.05.pkgxaction.sql',1556231699,6625),('phabricator:20160721.pack.06.version.sql',1556231699,5517),('phabricator:20160721.pack.07.versionxaction.sql',1556231699,6541),('phabricator:20160722.pack.01.pubngrams.sql',1556231699,5991),('phabricator:20160722.pack.02.pkgngrams.sql',1556231699,6165),('phabricator:20160722.pack.03.versionngrams.sql',1556231699,5845),('phabricator:20160810.commit.01.summarylength.sql',1556231699,16647),('phabricator:20160824.connectionlog.sql',1556231699,3624),('phabricator:20160824.repohint.01.hint.sql',1556231699,5880),('phabricator:20160824.repohint.02.movebad.php',1556231699,610),('phabricator:20160824.repohint.03.nukebad.sql',1556231699,3549),('phabricator:20160825.ponder.sql',1556231699,635),('phabricator:20160829.pastebin.01.language.sql',1556231699,16331),('phabricator:20160829.pastebin.02.language.sql',1556231699,560),('phabricator:20160913.conpherence.topic.1.sql',1556231699,11148),('phabricator:20160919.repo.messagecount.sql',1556231699,10883),('phabricator:20160919.repo.messagedefault.sql',1556231699,3870),('phabricator:20160921.fileexternalrequest.sql',1556231699,6461),('phabricator:20160927.phurl.ngrams.php',1556231699,88),('phabricator:20160927.phurl.ngrams.sql',1556231699,5450),('phabricator:20160928.repo.messagecount.sql',1556231699,513),('phabricator:20160928.tokentoken.sql',1556231699,7220),('phabricator:20161003.cal.01.utcepoch.sql',1556231699,39888),('phabricator:20161003.cal.02.parameters.sql',1556231699,13545),('phabricator:20161004.cal.01.noepoch.php',1556231699,1824),('phabricator:20161005.cal.01.rrules.php',1556231699,313),('phabricator:20161005.cal.02.export.sql',1556231699,6093),('phabricator:20161005.cal.03.exportxaction.sql',1556231699,6495),('phabricator:20161005.conpherence.image.1.sql',1556231699,12059),('phabricator:20161005.conpherence.image.2.php',1556231699,85),('phabricator:20161011.conpherence.ngrams.php',1556231699,65),('phabricator:20161011.conpherence.ngrams.sql',1556231699,5332),('phabricator:20161012.cal.01.import.sql',1556231699,6181),('phabricator:20161012.cal.02.importxaction.sql',1556231699,6973),('phabricator:20161012.cal.03.eventimport.sql',1556231699,52644),('phabricator:20161013.cal.01.importlog.sql',1556231699,5063),('phabricator:20161016.conpherence.imagephids.sql',1556231699,10859),('phabricator:20161025.phortune.contact.1.sql',1556231699,9620),('phabricator:20161025.phortune.merchant.image.1.sql',1556231699,11081),('phabricator:20161026.calendar.01.importtriggers.sql',1556231699,23297),('phabricator:20161027.calendar.01.externalinvitee.sql',1556231699,5726),('phabricator:20161029.phortune.invoice.1.sql',1556231699,20493),('phabricator:20161031.calendar.01.seriesparent.sql',1556231699,13938),('phabricator:20161031.calendar.02.notifylog.sql',1556231699,5033),('phabricator:20161101.calendar.01.noholiday.sql',1556231699,3280),('phabricator:20161101.calendar.02.removecolumns.sql',1556231699,78114),('phabricator:20161104.calendar.01.availability.sql',1556231699,11128),('phabricator:20161104.calendar.02.availdefault.sql',1556231699,550),('phabricator:20161115.phamepost.01.subtitle.sql',1556231699,11909),('phabricator:20161115.phamepost.02.header.sql',1556231699,13239),('phabricator:20161121.cluster.01.hoststate.sql',1556231699,4824),('phabricator:20161124.search.01.stopwords.sql',1556231699,4622),('phabricator:20161125.search.01.stemmed.sql',1556231699,7243),('phabricator:20161130.search.01.manual.sql',1556231699,5811),('phabricator:20161130.search.02.rebuild.php',1556231699,1398),('phabricator:20161210.dashboards.01.author.sql',1556231699,11083),('phabricator:20161210.dashboards.02.author.php',1556231699,1611),('phabricator:20161211.menu.01.itemkey.sql',1556231699,4255),('phabricator:20161211.menu.02.itemprops.sql',1556231699,3566),('phabricator:20161211.menu.03.order.sql',1556231699,3844),('phabricator:20161212.dashboardpanel.01.author.sql',1556231699,10207),('phabricator:20161212.dashboardpanel.02.author.php',1556231699,836),('phabricator:20161212.dashboards.01.icon.sql',1556231699,11227),('phabricator:20161213.diff.01.hunks.php',1556231699,747),('phabricator:20161216.dashboard.ngram.01.sql',1556231699,10936),('phabricator:20161216.dashboard.ngram.02.php',1556231699,114),('phabricator:20170106.menu.01.customphd.sql',1556231699,10393),('phabricator:20170109.diff.01.commit.sql',1556231699,12971),('phabricator:20170119.menuitem.motivator.01.php',1556231699,407),('phabricator:20170131.dashboard.personal.01.php',1556231699,1445),('phabricator:20170301.subtype.01.col.sql',1556231699,12251),('phabricator:20170301.subtype.02.default.sql',1556231699,687),('phabricator:20170301.subtype.03.taskcol.sql',1556231699,17435),('phabricator:20170301.subtype.04.taskdefault.sql',1556231699,554),('phabricator:20170303.people.01.avatar.sql',1556231699,27615),('phabricator:20170313.reviewers.01.sql',1556231699,5349),('phabricator:20170316.rawfiles.01.php',1556231699,1720),('phabricator:20170320.reviewers.01.lastaction.sql',1556231699,11553),('phabricator:20170320.reviewers.02.lastcomment.sql',1556231699,10266),('phabricator:20170320.reviewers.03.migrate.php',1556231699,1127),('phabricator:20170322.reviewers.04.actor.sql',1556231699,10051),('phabricator:20170328.reviewers.01.void.sql',1556231699,11143),('phabricator:20170404.files.retroactive-content-hash.sql',1556231699,19835),('phabricator:20170406.hmac.01.keystore.sql',1556231699,5350),('phabricator:20170410.calendar.01.repair.php',1556231699,576),('phabricator:20170412.conpherence.01.picturecrop.sql',1556231699,499),('phabricator:20170413.conpherence.01.recentparty.sql',1556231700,11833),('phabricator:20170417.files.ngrams.sql',1556231700,5606),('phabricator:20170418.1.application.01.xaction.sql',1556231700,6959),('phabricator:20170418.1.application.02.edge.sql',1556231700,9907),('phabricator:20170418.files.isDeleted.sql',1556231700,16731),('phabricator:20170419.app.01.table.sql',1556231700,5395),('phabricator:20170419.thread.01.behind.sql',1556231700,11820),('phabricator:20170419.thread.02.status.sql',1556231700,11320),('phabricator:20170419.thread.03.touched.sql',1556231700,12098),('phabricator:20170424.user.01.verify.php',1556231700,450),('phabricator:20170427.owners.01.long.sql',1556231700,10936),('phabricator:20170504.1.slowvote.shuffle.sql',1556231700,13917),('phabricator:20170522.nuance.01.itemkey.sql',1556231700,13967),('phabricator:20170524.nuance.01.command.sql',1556231700,29175),('phabricator:20170524.nuance.02.commandstatus.sql',1556231700,10499),('phabricator:20170526.dropdifferentialdrafts.sql',1556231700,4528),('phabricator:20170526.milestones.php',1556231700,82),('phabricator:20170528.maniphestdupes.php',1556231700,407),('phabricator:20170612.repository.image.01.sql',1556231700,14513),('phabricator:20170614.taskstatus.sql',1556231700,22946),('phabricator:20170725.legalpad.date.01.sql',1556231700,1121),('phabricator:20170811.differential.01.status.php',1556231700,436),('phabricator:20170811.differential.02.modernstatus.sql',1556231700,1112),('phabricator:20170811.differential.03.modernxaction.php',1556231700,946),('phabricator:20170814.search.01.qconfig.sql',1556231700,5484),('phabricator:20170820.phame.01.post.views.sql',1556231700,12773),('phabricator:20170820.phame.02.post.views.sql',1556231700,492),('phabricator:20170824.search.01.saved.php',1556231700,1093),('phabricator:20170825.phame.01.post.views.sql',1556231700,14383),('phabricator:20170828.ferret.01.taskdoc.sql',1556231700,4720),('phabricator:20170828.ferret.02.taskfield.sql',1556231700,4430),('phabricator:20170828.ferret.03.taskngrams.sql',1556231700,4459),('phabricator:20170830.ferret.01.unique.sql',1556231700,11567),('phabricator:20170830.ferret.02.term.sql',1556231700,10544),('phabricator:20170905.ferret.01.diff.doc.sql',1556231700,4638),('phabricator:20170905.ferret.02.diff.field.sql',1556231700,4380),('phabricator:20170905.ferret.03.diff.ngrams.sql',1556231700,4849),('phabricator:20170907.ferret.01.user.doc.sql',1556231700,4719),('phabricator:20170907.ferret.02.user.field.sql',1556231700,4741),('phabricator:20170907.ferret.03.user.ngrams.sql',1556231700,4472),('phabricator:20170907.ferret.04.fund.doc.sql',1556231700,6308),('phabricator:20170907.ferret.05.fund.field.sql',1556231700,4669),('phabricator:20170907.ferret.06.fund.ngrams.sql',1556231700,4853),('phabricator:20170907.ferret.07.passphrase.doc.sql',1556231700,4554),('phabricator:20170907.ferret.08.passphrase.field.sql',1556231700,5115),('phabricator:20170907.ferret.09.passphrase.ngrams.sql',1556231700,4083),('phabricator:20170907.ferret.10.owners.doc.sql',1556231700,4723),('phabricator:20170907.ferret.11.owners.field.sql',1556231700,5061),('phabricator:20170907.ferret.12.owners.ngrams.sql',1556231700,4786),('phabricator:20170907.ferret.13.blog.doc.sql',1556231700,4252),('phabricator:20170907.ferret.14.blog.field.sql',1556231700,4923),('phabricator:20170907.ferret.15.blog.ngrams.sql',1556231700,4231),('phabricator:20170907.ferret.16.post.doc.sql',1556231700,4741),('phabricator:20170907.ferret.17.post.field.sql',1556231700,4888),('phabricator:20170907.ferret.18.post.ngrams.sql',1556231700,5208),('phabricator:20170907.ferret.19.project.doc.sql',1556231700,4908),('phabricator:20170907.ferret.20.project.field.sql',1556231700,5022),('phabricator:20170907.ferret.21.project.ngrams.sql',1556231700,4594),('phabricator:20170907.ferret.22.phriction.doc.sql',1556231700,4889),('phabricator:20170907.ferret.23.phriction.field.sql',1556231700,4387),('phabricator:20170907.ferret.24.phriction.ngrams.sql',1556231700,4437),('phabricator:20170907.ferret.25.event.doc.sql',1556231700,5550),('phabricator:20170907.ferret.26.event.field.sql',1556231700,4987),('phabricator:20170907.ferret.27.event.ngrams.sql',1556231700,4139),('phabricator:20170907.ferret.28.mock.doc.sql',1556231700,5204),('phabricator:20170907.ferret.29.mock.field.sql',1556231700,4481),('phabricator:20170907.ferret.30.mock.ngrams.sql',1556231700,4263),('phabricator:20170907.ferret.31.repo.doc.sql',1556231700,4498),('phabricator:20170907.ferret.32.repo.field.sql',1556231700,5632),('phabricator:20170907.ferret.33.repo.ngrams.sql',1556231700,4712),('phabricator:20170907.ferret.34.commit.doc.sql',1556231700,5410),('phabricator:20170907.ferret.35.commit.field.sql',1556231700,4832),('phabricator:20170907.ferret.36.commit.ngrams.sql',1556231700,4997),('phabricator:20170912.ferret.01.activity.php',1556231700,358),('phabricator:20170914.ref.01.position.sql',1556231700,4702),('phabricator:20170915.ref.01.migrate.php',1556231700,735),('phabricator:20170915.ref.02.drop.id.sql',1556231700,11053),('phabricator:20170915.ref.03.drop.closed.sql',1556231700,10493),('phabricator:20170915.ref.04.uniq.sql',1556231700,6301),('phabricator:20170918.ref.01.position.php',1556231700,6814),('phabricator:20171002.cngram.01.maniphest.sql',1556231700,6208),('phabricator:20171002.cngram.02.event.sql',1556231700,6453),('phabricator:20171002.cngram.03.revision.sql',1556231700,5686),('phabricator:20171002.cngram.04.fund.sql',1556231700,5388),('phabricator:20171002.cngram.05.owners.sql',1556231700,5625),('phabricator:20171002.cngram.06.passphrase.sql',1556231700,6665),('phabricator:20171002.cngram.07.blog.sql',1556231700,5687),('phabricator:20171002.cngram.08.post.sql',1556231700,5555),('phabricator:20171002.cngram.09.pholio.sql',1556231700,5669),('phabricator:20171002.cngram.10.phriction.sql',1556231700,5644),('phabricator:20171002.cngram.11.project.sql',1556231700,5239),('phabricator:20171002.cngram.12.user.sql',1556231700,6475),('phabricator:20171002.cngram.13.repository.sql',1556231700,5340),('phabricator:20171002.cngram.14.commit.sql',1556231700,5519),('phabricator:20171026.ferret.01.ponder.doc.sql',1556231700,4734),('phabricator:20171026.ferret.02.ponder.field.sql',1556231700,4312),('phabricator:20171026.ferret.03.ponder.ngrams.sql',1556231700,4486),('phabricator:20171026.ferret.04.ponder.cngrams.sql',1556231700,6303),('phabricator:20171026.ferret.05.ponder.index.php',1556231700,111),('phabricator:20171101.diff.01.active.sql',1556231700,13157),('phabricator:20171101.diff.02.populate.php',1556231700,466),('phabricator:20180119.bulk.01.silent.sql',1556231700,12179),('phabricator:20180120.auth.01.password.sql',1556231700,5465),('phabricator:20180120.auth.02.passwordxaction.sql',1556231700,7117),('phabricator:20180120.auth.03.vcsdata.sql',1556231700,1196),('phabricator:20180120.auth.04.vcsphid.php',1556231700,751),('phabricator:20180121.auth.01.vcsnuke.sql',1556231700,3980),('phabricator:20180121.auth.02.passsalt.sql',1556231700,9066),('phabricator:20180121.auth.03.accountdata.sql',1556231700,607),('phabricator:20180121.auth.04.accountphid.php',1556231700,431),('phabricator:20180121.auth.05.accountnuke.sql',1556231700,29120),('phabricator:20180121.auth.06.legacydigest.sql',1556231700,9699),('phabricator:20180121.auth.07.marklegacy.sql',1556231700,567),('phabricator:20180124.herald.01.repetition.sql',1556231700,17664),('phabricator:20180207.mail.01.task.sql',1556231700,18090),('phabricator:20180207.mail.02.revision.sql',1556231700,13051),('phabricator:20180207.mail.03.mock.sql',1556231700,11482),('phabricator:20180208.maniphest.01.close.sql',1556231700,34873),('phabricator:20180208.maniphest.02.populate.php',1556231700,494),('phabricator:20180209.hook.01.hook.sql',1556231700,5084),('phabricator:20180209.hook.02.hookxaction.sql',1556231700,6844),('phabricator:20180209.hook.03.hookrequest.sql',1556231700,4822),('phabricator:20180210.hunk.01.droplegacy.sql',1556231700,4058),('phabricator:20180210.hunk.02.renamemodern.sql',1556231700,4436),('phabricator:20180212.harbor.01.receiver.sql',1556231700,14179),('phabricator:20180214.harbor.01.aborted.php',1556231700,902),('phabricator:20180215.phriction.01.phidcol.sql',1556231701,12098),('phabricator:20180215.phriction.02.phidvalues.php',1556231701,643),('phabricator:20180215.phriction.03.descempty.sql',1556231701,535),('phabricator:20180215.phriction.04.descnull.sql',1556231701,14930),('phabricator:20180215.phriction.05.statustext.sql',1556231701,15691),('phabricator:20180215.phriction.06.statusvalue.sql',1556231701,904),('phabricator:20180218.fact.01.dim.key.sql',1556231701,5182),('phabricator:20180218.fact.02.dim.obj.sql',1556231701,4795),('phabricator:20180218.fact.03.data.int.sql',1556231701,4788),('phabricator:20180222.log.01.filephid.sql',1556231701,12884),('phabricator:20180223.log.01.bytelength.sql',1556231701,11783),('phabricator:20180223.log.02.chunkformat.sql',1556231701,10735),('phabricator:20180223.log.03.chunkdefault.sql',1556231701,508),('phabricator:20180223.log.04.linemap.sql',1556231701,12025),('phabricator:20180223.log.05.linemapdefault.sql',1556231701,597),('phabricator:20180228.log.01.offset.sql',1556231701,20084),('phabricator:20180305.lock.01.locklog.sql',1556231701,4480),('phabricator:20180306.opath.01.digest.sql',1556231701,11285),('phabricator:20180306.opath.02.digestpopulate.php',1556231701,636),('phabricator:20180306.opath.03.purge.php',1556231701,422),('phabricator:20180306.opath.04.unique.sql',1556231701,6155),('phabricator:20180306.opath.05.longpath.sql',1556231701,12989),('phabricator:20180306.opath.06.pathdisplay.sql',1556231701,10854),('phabricator:20180306.opath.07.copypaths.sql',1556231701,667),('phabricator:20180309.owners.01.primaryowner.sql',1556231701,12220),('phabricator:20180312.reviewers.01.options.sql',1556231701,10529),('phabricator:20180312.reviewers.02.optionsdefault.sql',1556231701,514),('phabricator:20180322.lock.01.identifier.sql',1556231701,18925),('phabricator:20180322.lock.02.wait.sql',1556231701,35843),('phabricator:20180326.lock.03.nonunique.sql',1556231701,5998),('phabricator:20180403.draft.01.broadcast.php',1556231701,689),('phabricator:20180410.almanac.01.iface.xaction.sql',1556231701,6457),('phabricator:20180418.alamanc.interface.unique.php',1556231701,8603),('phabricator:20180418.almanac.network.unique.php',1556231701,6736),('phabricator:20180419.phlux.edges.sql',1556231701,10016),('phabricator:20180423.mail.01.properties.sql',1556231701,5352),('phabricator:20180430.repo_identity.sql',1556231701,6953),('phabricator:20180504.owners.01.mailkey.php',1556231701,613),('phabricator:20180504.owners.02.rmkey.sql',1556231701,10972),('phabricator:20180504.owners.03.properties.sql',1556231701,11898),('phabricator:20180504.owners.04.default.sql',1556231701,626),('phabricator:20180504.repo_identity.author.sql',1556231701,11039),('phabricator:20180504.repo_identity.xaction.sql',1556231701,7323),('phabricator:20180509.repo_identity.commits.sql',1556231701,13684),('phabricator:20180730.phriction.01.spaces.sql',1556231701,12193),('phabricator:20180730.project.01.spaces.sql',1556231701,16504),('phabricator:20180809.repo_identities.activity.php',1556231701,412),('phabricator:20180827.drydock.01.acquired.sql',1556231701,11934),('phabricator:20180827.drydock.02.activated.sql',1556231701,10516),('phabricator:20180828.phriction.01.contentphid.sql',1556231701,12373),('phabricator:20180828.phriction.02.documentphid.sql',1556231701,12991),('phabricator:20180828.phriction.03.editedepoch.sql',1556231701,12601),('phabricator:20180828.phriction.04.migrate.php',1556231701,612),('phabricator:20180828.phriction.05.contentid.sql',1556231701,11315),('phabricator:20180828.phriction.06.c.documentid.php',1556231701,4931),('phabricator:20180828.phriction.06.documentid.sql',1556231701,12630),('phabricator:20180828.phriction.07.c.documentuniq.sql',1556231701,539),('phabricator:20180828.phriction.07.documentkey.sql',1556231701,6810),('phabricator:20180829.phriction.01.mailkey.php',1556231701,454),('phabricator:20180829.phriction.02.rmkey.sql',1556231701,12074),('phabricator:20180830.phriction.01.maxversion.sql',1556231701,12437),('phabricator:20180830.phriction.02.maxes.php',1556231701,429),('phabricator:20180910.audit.01.searches.php',1556231701,358),('phabricator:20180910.audit.02.string.sql',1556231701,27220),('phabricator:20180910.audit.03.status.php',1556231701,1070),('phabricator:20180910.audit.04.xactions.php',1556231701,1835),('phabricator:20180914.audit.01.mailkey.php',1556231701,501),('phabricator:20180914.audit.02.rmkey.sql',1556231701,15907),('phabricator:20180914.drydock.01.operationphid.sql',1556231701,11675),('phabricator:20181024.drydock.01.commandprops.sql',1556231701,10537),('phabricator:20181024.drydock.02.commanddefaults.sql',1556231701,562),('phabricator:20181031.board.01.queryreset.php',1556231701,2252),('phabricator:20181106.repo.01.sync.sql',1556231701,5414),('phabricator:20181106.repo.02.hook.sql',1556231701,10859),('phabricator:20181213.auth.01.sessionphid.sql',1556231701,11625),('phabricator:20181213.auth.02.populatephid.php',1556231701,418),('phabricator:20181213.auth.03.phidkey.sql',1556231701,8125),('phabricator:20181213.auth.04.longerhashes.sql',1556231701,15735),('phabricator:20181213.auth.05.longerloghashes.sql',1556231701,17050),('phabricator:20181213.auth.06.challenge.sql',1556231701,5795),('phabricator:20181214.auth.01.workflowkey.sql',1556231701,9956),('phabricator:20181217.auth.01.digest.sql',1556231701,10408),('phabricator:20181217.auth.02.ttl.sql',1556231701,10154),('phabricator:20181217.auth.03.completed.sql',1556231701,10782),('phabricator:20181218.pholio.01.imageauthor.sql',1556231701,11427),('phabricator:20181219.pholio.01.imagephid.sql',1556231701,11379),('phabricator:20181219.pholio.02.imagemigrate.php',1556231701,707),('phabricator:20181219.pholio.03.imageid.sql',1556231701,11959),('phabricator:20181220.pholio.01.mailkey.php',1556231701,444),('phabricator:20181220.pholio.02.dropmailkey.sql',1556231701,11687),('phabricator:20181228.auth.01.provider.sql',1556231701,4634),('phabricator:20181228.auth.02.xaction.sql',1556231701,6313),('phabricator:20181228.auth.03.name.sql',1556231701,10666),('phabricator:20190101.sms.01.drop.sql',1556231701,4467),('phabricator:20190115.mfa.01.provider.sql',1556231701,11158),('phabricator:20190115.mfa.02.migrate.php',1556231701,974),('phabricator:20190115.mfa.03.factorkey.sql',1556231701,10875),('phabricator:20190116.contact.01.number.sql',1556231701,5635),('phabricator:20190116.contact.02.xaction.sql',1556231701,6947),('phabricator:20190116.phortune.01.billing.sql',1556231701,9904),('phabricator:20190117.authmessage.01.message.sql',1556231701,4988),('phabricator:20190117.authmessage.02.xaction.sql',1556231701,6637),('phabricator:20190121.contact.01.primary.sql',1556231701,11548),('phabricator:20190127.project.01.subtype.sql',1556231701,17416),('phabricator:20190127.project.02.default.sql',1556231701,555),('phabricator:20190129.project.01.spaces.php',1556231701,406),('phabricator:20190206.external.01.legalpad.sql',1556231701,485),('phabricator:20190206.external.02.email.sql',1556231701,524),('phabricator:20190206.external.03.providerphid.sql',1556231701,13239),('phabricator:20190206.external.04.providerlink.php',1556231701,698),('phabricator:20190207.packages.01.state.sql',1556231702,10942),('phabricator:20190207.packages.02.migrate.sql',1556231702,565),('phabricator:20190207.packages.03.drop.sql',1556231702,11126),('phabricator:20190207.packages.04.xactions.php',1556231702,1229),('phabricator:20190215.daemons.01.dropdataid.php',1556231702,5352),('phabricator:20190215.daemons.02.nulldataid.sql',1556231702,13353),('phabricator:20190215.harbor.01.stringindex.sql',1556231702,5418),('phabricator:20190215.harbor.02.stringcol.sql',1556231702,10942),('phabricator:20190220.daemon_worker.completed.01.sql',1556231702,12323),('phabricator:20190220.daemon_worker.completed.02.sql',1556231702,12844),('phabricator:20190226.harbor.01.planprops.sql',1556231702,10963),('phabricator:20190226.harbor.02.planvalue.sql',1556231702,644),('phabricator:20190307.herald.01.comments.sql',1556231702,4292),('phabricator:20190312.triggers.01.trigger.sql',1556231702,5749),('phabricator:20190312.triggers.02.xaction.sql',1556231702,7189),('phabricator:20190312.triggers.03.triggerphid.sql',1556231702,12671),('phabricator:20190322.triggers.01.usage.sql',1556231702,5436),('phabricator:20190329.portals.01.create.sql',1556231702,4633),('phabricator:20190329.portals.02.xaction.sql',1556231702,8280),('phabricator:20190410.portals.01.ferret.doc.sql',1556231702,5198),('phabricator:20190410.portals.02.ferret.field.sql',1556231702,4797),('phabricator:20190410.portals.03.ferret.ngrams.sql',1556231702,4275),('phabricator:20190410.portals.04.ferret.cngrams.sql',1556231702,5990),('phabricator:20190412.dashboard.01.panels.php',1556231702,453),('phabricator:20190412.dashboard.02.install.sql',1556231702,3768),('phabricator:20190412.dashboard.03.dashngrams.sql',1556231702,4706),('phabricator:20190412.dashboard.04.panelngrams.sql',1556231702,4492),('phabricator:20190412.dashboard.05.dferret.doc.sql',1556231702,4528),('phabricator:20190412.dashboard.06.dferret.field.sql',1556231702,5105),('phabricator:20190412.dashboard.07.dferret.ngrams.sql',1556231702,4069),('phabricator:20190412.dashboard.08.dferret.cngrams.sql',1556231702,5099),('phabricator:20190412.dashboard.09.pferret.doc.sql',1556231702,4827),('phabricator:20190412.dashboard.10.pferret.field.sql',1556231702,5374),('phabricator:20190412.dashboard.11.pferret.ngrams.sql',1556231702,5073),('phabricator:20190412.dashboard.12.pferret.cngrams.sql',1556231702,5528),('phabricator:20190412.dashboard.13.rebuild.php',1556231702,7019),('phabricator:20190412.herald.01.rebuild.php',1556231702,1878),('phabricator:20190416.chart.01.storage.sql',1556231702,4935),('phabricator:daemonstatus.sql',1556231688,NULL),('phabricator:daemonstatuskey.sql',1556231689,NULL),('phabricator:daemontaskarchive.sql',1556231689,NULL),('phabricator:db.almanac',1556231684,NULL),('phabricator:db.application',1556231684,NULL),('phabricator:db.audit',1556231684,NULL),('phabricator:db.auth',1556231684,NULL),('phabricator:db.badges',1556231684,NULL),('phabricator:db.cache',1556231684,NULL),('phabricator:db.calendar',1556231684,NULL),('phabricator:db.chatlog',1556231684,NULL),('phabricator:db.conduit',1556231684,NULL),('phabricator:db.config',1556231684,NULL),('phabricator:db.conpherence',1556231684,NULL),('phabricator:db.countdown',1556231684,NULL),('phabricator:db.daemon',1556231684,NULL),('phabricator:db.dashboard',1556231684,NULL),('phabricator:db.differential',1556231684,NULL),('phabricator:db.diviner',1556231684,NULL),('phabricator:db.doorkeeper',1556231684,NULL),('phabricator:db.draft',1556231684,NULL),('phabricator:db.drydock',1556231684,NULL),('phabricator:db.fact',1556231684,NULL),('phabricator:db.feed',1556231684,NULL),('phabricator:db.file',1556231684,NULL),('phabricator:db.flag',1556231684,NULL),('phabricator:db.fund',1556231684,NULL),('phabricator:db.harbormaster',1556231684,NULL),('phabricator:db.herald',1556231684,NULL),('phabricator:db.legalpad',1556231684,NULL),('phabricator:db.maniphest',1556231684,NULL),('phabricator:db.meta_data',1556231684,NULL),('phabricator:db.metamta',1556231684,NULL),('phabricator:db.multimeter',1556231684,NULL),('phabricator:db.nuance',1556231684,NULL),('phabricator:db.oauth_server',1556231684,NULL),('phabricator:db.owners',1556231684,NULL),('phabricator:db.packages',1556231684,NULL),('phabricator:db.passphrase',1556231684,NULL),('phabricator:db.pastebin',1556231684,NULL),('phabricator:db.phame',1556231684,NULL),('phabricator:db.phlux',1556231684,NULL),('phabricator:db.pholio',1556231684,NULL),('phabricator:db.phortune',1556231684,NULL),('phabricator:db.phragment',1556231684,NULL),('phabricator:db.phrequent',1556231684,NULL),('phabricator:db.phriction',1556231684,NULL),('phabricator:db.phurl',1556231684,NULL),('phabricator:db.policy',1556231684,NULL),('phabricator:db.ponder',1556231684,NULL),('phabricator:db.project',1556231684,NULL),('phabricator:db.releeph',1556231684,NULL),('phabricator:db.repository',1556231684,NULL),('phabricator:db.search',1556231684,NULL),('phabricator:db.slowvote',1556231684,NULL),('phabricator:db.spaces',1556231684,NULL),('phabricator:db.system',1556231684,NULL),('phabricator:db.timeline',1556231684,NULL),('phabricator:db.token',1556231684,NULL),('phabricator:db.user',1556231684,NULL),('phabricator:db.worker',1556231684,NULL),('phabricator:db.xhpast',1556231684,NULL),('phabricator:db.xhpastview',1556231684,NULL),('phabricator:db.xhprof',1556231684,NULL),('phabricator:differentialbookmarks.sql',1556231688,NULL),('phabricator:draft-metadata.sql',1556231689,NULL),('phabricator:dropfileproxyimage.sql',1556231689,NULL),('phabricator:drydockresoucetype.sql',1556231689,NULL),('phabricator:drydocktaskid.sql',1556231689,NULL),('phabricator:edgetype.sql',1556231689,NULL),('phabricator:emailtable.sql',1556231688,NULL),('phabricator:emailtableport.sql',1556231688,NULL),('phabricator:emailtableremove.sql',1556231688,NULL),('phabricator:fact-raw.sql',1556231688,NULL),('phabricator:harbormasterobject.sql',1556231688,NULL),('phabricator:holidays.sql',1556231688,NULL),('phabricator:ldapinfo.sql',1556231688,NULL),('phabricator:legalpad-mailkey-populate.php',1556231690,NULL),('phabricator:legalpad-mailkey.sql',1556231690,NULL),('phabricator:liskcounters-task.sql',1556231689,NULL),('phabricator:liskcounters.php',1556231689,NULL),('phabricator:liskcounters.sql',1556231689,NULL),('phabricator:maniphestxcache.sql',1556231688,NULL),('phabricator:markupcache.sql',1556231688,NULL),('phabricator:migrate-differential-dependencies.php',1556231688,NULL),('phabricator:migrate-maniphest-dependencies.php',1556231688,NULL),('phabricator:migrate-maniphest-revisions.php',1556231688,NULL),('phabricator:migrate-project-edges.php',1556231688,NULL),('phabricator:owners-exclude.sql',1556231689,NULL),('phabricator:pastepolicy.sql',1556231689,NULL),('phabricator:phameblog.sql',1556231688,NULL),('phabricator:phamedomain.sql',1556231689,NULL),('phabricator:phameoneblog.sql',1556231689,NULL),('phabricator:phamepolicy.sql',1556231689,NULL),('phabricator:phiddrop.sql',1556231688,NULL),('phabricator:pholio.sql',1556231689,NULL),('phabricator:policy-project.sql',1556231689,NULL),('phabricator:ponder-comments.sql',1556231689,NULL),('phabricator:ponder-mailkey-populate.php',1556231689,NULL),('phabricator:ponder-mailkey.sql',1556231689,NULL),('phabricator:ponder.sql',1556231688,NULL),('phabricator:releeph.sql',1556231689,NULL),('phabricator:repository-lint.sql',1556231689,NULL),('phabricator:statustxt.sql',1556231689,NULL),('phabricator:symbolcontexts.sql',1556231688,NULL),('phabricator:testdatabase.sql',1556231688,NULL),('phabricator:threadtopic.sql',1556231688,NULL),('phabricator:userstatus.sql',1556231688,NULL),('phabricator:usertranslation.sql',1556231688,NULL),('phabricator:xhprof.sql',1556231689,NULL); +INSERT INTO `patch_status` VALUES ('phabricator:000.project.sql',1556231684,NULL),('phabricator:0000.legacy.sql',1556231684,NULL),('phabricator:001.maniphest_projects.sql',1556231684,NULL),('phabricator:002.oauth.sql',1556231684,NULL),('phabricator:003.more_oauth.sql',1556231684,NULL),('phabricator:004.daemonrepos.sql',1556231684,NULL),('phabricator:005.workers.sql',1556231684,NULL),('phabricator:006.repository.sql',1556231684,NULL),('phabricator:007.daemonlog.sql',1556231684,NULL),('phabricator:008.repoopt.sql',1556231684,NULL),('phabricator:009.repo_summary.sql',1556231684,NULL),('phabricator:010.herald.sql',1556231684,NULL),('phabricator:011.badcommit.sql',1556231684,NULL),('phabricator:012.dropphidtype.sql',1556231684,NULL),('phabricator:013.commitdetail.sql',1556231684,NULL),('phabricator:014.shortcuts.sql',1556231684,NULL),('phabricator:015.preferences.sql',1556231684,NULL),('phabricator:016.userrealnameindex.sql',1556231684,NULL),('phabricator:017.sessionkeys.sql',1556231684,NULL),('phabricator:018.owners.sql',1556231684,NULL),('phabricator:019.arcprojects.sql',1556231684,NULL),('phabricator:020.pathcapital.sql',1556231684,NULL),('phabricator:021.xhpastview.sql',1556231684,NULL),('phabricator:022.differentialcommit.sql',1556231684,NULL),('phabricator:023.dxkeys.sql',1556231685,NULL),('phabricator:024.mlistkeys.sql',1556231685,NULL),('phabricator:025.commentopt.sql',1556231685,NULL),('phabricator:026.diffpropkey.sql',1556231685,NULL),('phabricator:027.metamtakeys.sql',1556231685,NULL),('phabricator:028.systemagent.sql',1556231685,NULL),('phabricator:029.cursors.sql',1556231685,NULL),('phabricator:030.imagemacro.sql',1556231685,NULL),('phabricator:031.workerrace.sql',1556231685,NULL),('phabricator:032.viewtime.sql',1556231685,NULL),('phabricator:033.privtest.sql',1556231685,NULL),('phabricator:034.savedheader.sql',1556231685,NULL),('phabricator:035.proxyimage.sql',1556231685,NULL),('phabricator:036.mailkey.sql',1556231685,NULL),('phabricator:037.setuptest.sql',1556231685,NULL),('phabricator:038.admin.sql',1556231685,NULL),('phabricator:039.userlog.sql',1556231685,NULL),('phabricator:040.transform.sql',1556231685,NULL),('phabricator:041.heraldrepetition.sql',1556231685,NULL),('phabricator:042.commentmetadata.sql',1556231685,NULL),('phabricator:043.pastebin.sql',1556231685,NULL),('phabricator:044.countdown.sql',1556231685,NULL),('phabricator:045.timezone.sql',1556231685,NULL),('phabricator:046.conduittoken.sql',1556231685,NULL),('phabricator:047.projectstatus.sql',1556231685,NULL),('phabricator:048.relationshipkeys.sql',1556231685,NULL),('phabricator:049.projectowner.sql',1556231685,NULL),('phabricator:050.taskdenormal.sql',1556231685,NULL),('phabricator:051.projectfilter.sql',1556231685,NULL),('phabricator:052.pastelanguage.sql',1556231685,NULL),('phabricator:053.feed.sql',1556231685,NULL),('phabricator:054.subscribers.sql',1556231685,NULL),('phabricator:055.add_author_to_files.sql',1556231685,NULL),('phabricator:056.slowvote.sql',1556231685,NULL),('phabricator:057.parsecache.sql',1556231685,NULL),('phabricator:058.missingkeys.sql',1556231685,NULL),('phabricator:059.engines.php',1556231685,NULL),('phabricator:060.phriction.sql',1556231685,NULL),('phabricator:061.phrictioncontent.sql',1556231685,NULL),('phabricator:062.phrictionmenu.sql',1556231685,NULL),('phabricator:063.pasteforks.sql',1556231685,NULL),('phabricator:064.subprojects.sql',1556231685,NULL),('phabricator:065.sshkeys.sql',1556231685,NULL),('phabricator:066.phrictioncontent.sql',1556231685,NULL),('phabricator:067.preferences.sql',1556231685,NULL),('phabricator:068.maniphestauxiliarystorage.sql',1556231685,NULL),('phabricator:069.heraldxscript.sql',1556231685,NULL),('phabricator:070.differentialaux.sql',1556231685,NULL),('phabricator:071.contentsource.sql',1556231685,NULL),('phabricator:072.blamerevert.sql',1556231685,NULL),('phabricator:073.reposymbols.sql',1556231685,NULL),('phabricator:074.affectedpath.sql',1556231685,NULL),('phabricator:075.revisionhash.sql',1556231685,NULL),('phabricator:076.indexedlanguages.sql',1556231685,NULL),('phabricator:077.originalemail.sql',1556231685,NULL),('phabricator:078.nametoken.sql',1556231685,NULL),('phabricator:079.nametokenindex.php',1556231685,NULL),('phabricator:080.filekeys.sql',1556231685,NULL),('phabricator:081.filekeys.php',1556231685,NULL),('phabricator:082.xactionkey.sql',1556231685,NULL),('phabricator:083.dxviewtime.sql',1556231685,NULL),('phabricator:084.pasteauthorkey.sql',1556231685,NULL),('phabricator:085.packagecommitrelationship.sql',1556231685,NULL),('phabricator:086.formeraffil.sql',1556231685,NULL),('phabricator:087.phrictiondelete.sql',1556231685,NULL),('phabricator:088.audit.sql',1556231685,NULL),('phabricator:089.projectwiki.sql',1556231685,NULL),('phabricator:090.forceuniqueprojectnames.php',1556231685,NULL),('phabricator:091.uniqueslugkey.sql',1556231686,NULL),('phabricator:092.dropgithubnotification.sql',1556231686,NULL),('phabricator:093.gitremotes.php',1556231686,NULL),('phabricator:094.phrictioncolumn.sql',1556231686,NULL),('phabricator:095.directory.sql',1556231686,NULL),('phabricator:096.filename.sql',1556231686,NULL),('phabricator:097.heraldruletypes.sql',1556231686,NULL),('phabricator:098.heraldruletypemigration.php',1556231686,NULL),('phabricator:099.drydock.sql',1556231686,NULL),('phabricator:100.projectxaction.sql',1556231686,NULL),('phabricator:101.heraldruleapplied.sql',1556231686,NULL),('phabricator:102.heraldcleanup.php',1556231686,NULL),('phabricator:103.heraldedithistory.sql',1556231686,NULL),('phabricator:104.searchkey.sql',1556231686,NULL),('phabricator:105.mimetype.sql',1556231686,NULL),('phabricator:106.chatlog.sql',1556231686,NULL),('phabricator:107.oauthserver.sql',1556231686,NULL),('phabricator:108.oauthscope.sql',1556231686,NULL),('phabricator:109.oauthclientphidkey.sql',1556231686,NULL),('phabricator:110.commitaudit.sql',1556231686,NULL),('phabricator:111.commitauditmigration.php',1556231686,NULL),('phabricator:112.oauthaccesscoderedirecturi.sql',1556231686,NULL),('phabricator:113.lastreviewer.sql',1556231686,NULL),('phabricator:114.auditrequest.sql',1556231686,NULL),('phabricator:115.prepareutf8.sql',1556231686,NULL),('phabricator:116.utf8-backup-first-expect-wait.sql',1556231688,NULL),('phabricator:117.repositorydescription.php',1556231688,NULL),('phabricator:118.auditinline.sql',1556231688,NULL),('phabricator:119.filehash.sql',1556231688,NULL),('phabricator:120.noop.sql',1556231688,NULL),('phabricator:121.drydocklog.sql',1556231688,NULL),('phabricator:122.flag.sql',1556231688,NULL),('phabricator:123.heraldrulelog.sql',1556231688,NULL),('phabricator:124.subpriority.sql',1556231688,NULL),('phabricator:125.ipv6.sql',1556231688,NULL),('phabricator:126.edges.sql',1556231688,NULL),('phabricator:127.userkeybody.sql',1556231688,NULL),('phabricator:128.phabricatorcom.sql',1556231688,NULL),('phabricator:129.savedquery.sql',1556231688,NULL),('phabricator:130.denormalrevisionquery.sql',1556231688,NULL),('phabricator:131.migraterevisionquery.php',1556231688,NULL),('phabricator:132.phame.sql',1556231688,NULL),('phabricator:133.imagemacro.sql',1556231688,NULL),('phabricator:134.emptysearch.sql',1556231688,NULL),('phabricator:135.datecommitted.sql',1556231688,NULL),('phabricator:136.sex.sql',1556231688,NULL),('phabricator:137.auditmetadata.sql',1556231688,NULL),('phabricator:138.notification.sql',1556231688,NULL),('phabricator:20121209.pholioxactions.sql',1556231689,NULL),('phabricator:20121209.xmacroadd.sql',1556231689,NULL),('phabricator:20121209.xmacromigrate.php',1556231689,NULL),('phabricator:20121209.xmacromigratekey.sql',1556231689,NULL),('phabricator:20121220.generalcache.sql',1556231689,NULL),('phabricator:20121226.config.sql',1556231689,NULL),('phabricator:20130101.confxaction.sql',1556231689,NULL),('phabricator:20130102.metamtareceivedmailmessageidhash.sql',1556231689,NULL),('phabricator:20130103.filemetadata.sql',1556231689,NULL),('phabricator:20130111.conpherence.sql',1556231689,NULL),('phabricator:20130127.altheraldtranscript.sql',1556231689,NULL),('phabricator:20130131.conpherencepics.sql',1556231689,NULL),('phabricator:20130201.revisionunsubscribed.php',1556231689,NULL),('phabricator:20130201.revisionunsubscribed.sql',1556231689,NULL),('phabricator:20130214.chatlogchannel.sql',1556231689,NULL),('phabricator:20130214.chatlogchannelid.sql',1556231689,NULL),('phabricator:20130214.token.sql',1556231689,NULL),('phabricator:20130215.phabricatorfileaddttl.sql',1556231689,NULL),('phabricator:20130217.cachettl.sql',1556231689,NULL),('phabricator:20130218.longdaemon.sql',1556231689,NULL),('phabricator:20130218.updatechannelid.php',1556231689,NULL),('phabricator:20130219.commitsummary.sql',1556231689,NULL),('phabricator:20130219.commitsummarymig.php',1556231689,NULL),('phabricator:20130222.dropchannel.sql',1556231689,NULL),('phabricator:20130226.commitkey.sql',1556231689,NULL),('phabricator:20130304.lintauthor.sql',1556231689,NULL),('phabricator:20130310.xactionmeta.sql',1556231689,NULL),('phabricator:20130317.phrictionedge.sql',1556231689,NULL),('phabricator:20130319.conpherence.sql',1556231689,NULL),('phabricator:20130319.phabricatorfileexplicitupload.sql',1556231689,NULL),('phabricator:20130320.phlux.sql',1556231689,NULL),('phabricator:20130321.token.sql',1556231689,NULL),('phabricator:20130330.phrequent.sql',1556231689,NULL),('phabricator:20130403.conpherencecache.sql',1556231689,NULL),('phabricator:20130403.conpherencecachemig.php',1556231689,NULL),('phabricator:20130409.commitdrev.php',1556231689,NULL),('phabricator:20130417.externalaccount.sql',1556231689,NULL),('phabricator:20130423.conpherenceindices.sql',1556231690,NULL),('phabricator:20130423.updateexternalaccount.sql',1556231689,NULL),('phabricator:20130426.search_savedquery.sql',1556231690,NULL),('phabricator:20130502.countdownrevamp1.sql',1556231690,NULL),('phabricator:20130502.countdownrevamp2.php',1556231690,NULL),('phabricator:20130502.countdownrevamp3.sql',1556231690,NULL),('phabricator:20130507.releephrqmailkey.sql',1556231690,NULL),('phabricator:20130507.releephrqmailkeypop.php',1556231690,NULL),('phabricator:20130507.releephrqsimplifycols.sql',1556231690,NULL),('phabricator:20130508.releephtransactions.sql',1556231690,NULL),('phabricator:20130508.releephtransactionsmig.php',1556231690,NULL),('phabricator:20130508.search_namedquery.sql',1556231690,NULL),('phabricator:20130513.receviedmailstatus.sql',1556231690,NULL),('phabricator:20130519.diviner.sql',1556231690,NULL),('phabricator:20130521.dropconphimages.sql',1556231690,NULL),('phabricator:20130523.maniphest_owners.sql',1556231690,NULL),('phabricator:20130524.repoxactions.sql',1556231690,NULL),('phabricator:20130529.macroauthor.sql',1556231690,NULL),('phabricator:20130529.macroauthormig.php',1556231690,NULL),('phabricator:20130530.macrodatekey.sql',1556231690,NULL),('phabricator:20130530.pastekeys.sql',1556231690,NULL),('phabricator:20130530.sessionhash.php',1556231690,NULL),('phabricator:20130531.filekeys.sql',1556231690,NULL),('phabricator:20130602.morediviner.sql',1556231690,NULL),('phabricator:20130602.namedqueries.sql',1556231690,NULL),('phabricator:20130606.userxactions.sql',1556231690,NULL),('phabricator:20130607.xaccount.sql',1556231690,NULL),('phabricator:20130611.migrateoauth.php',1556231690,NULL),('phabricator:20130611.nukeldap.php',1556231690,NULL),('phabricator:20130613.authdb.sql',1556231690,NULL),('phabricator:20130619.authconf.php',1556231690,NULL),('phabricator:20130620.diffxactions.sql',1556231690,NULL),('phabricator:20130621.diffcommentphid.sql',1556231690,NULL),('phabricator:20130621.diffcommentphidmig.php',1556231690,NULL),('phabricator:20130621.diffcommentunphid.sql',1556231690,NULL),('phabricator:20130622.doorkeeper.sql',1556231690,NULL),('phabricator:20130628.legalpadv0.sql',1556231690,NULL),('phabricator:20130701.conduitlog.sql',1556231690,NULL),('phabricator:20130703.legalpaddocdenorm.php',1556231690,NULL),('phabricator:20130703.legalpaddocdenorm.sql',1556231690,NULL),('phabricator:20130709.droptimeline.sql',1556231690,NULL),('phabricator:20130709.legalpadsignature.sql',1556231690,NULL),('phabricator:20130711.pholioimageobsolete.php',1556231690,NULL),('phabricator:20130711.pholioimageobsolete.sql',1556231690,NULL),('phabricator:20130711.pholioimageobsolete2.sql',1556231690,NULL),('phabricator:20130711.trimrealnames.php',1556231690,NULL),('phabricator:20130714.votexactions.sql',1556231690,NULL),('phabricator:20130715.votecomments.php',1556231690,NULL),('phabricator:20130715.voteedges.sql',1556231690,NULL),('phabricator:20130716.archivememberlessprojects.php',1556231690,NULL),('phabricator:20130722.pholioreplace.sql',1556231690,NULL),('phabricator:20130723.taskstarttime.sql',1556231690,NULL),('phabricator:20130726.ponderxactions.sql',1556231690,NULL),('phabricator:20130727.ponderquestionstatus.sql',1556231690,NULL),('phabricator:20130728.ponderunique.php',1556231690,NULL),('phabricator:20130728.ponderuniquekey.sql',1556231690,NULL),('phabricator:20130728.ponderxcomment.php',1556231690,NULL),('phabricator:20130731.releephcutpointidentifier.sql',1556231690,NULL),('phabricator:20130731.releephproject.sql',1556231690,NULL),('phabricator:20130731.releephrepoid.sql',1556231690,NULL),('phabricator:20130801.pastexactions.php',1556231690,NULL),('phabricator:20130801.pastexactions.sql',1556231690,NULL),('phabricator:20130802.heraldphid.sql',1556231690,NULL),('phabricator:20130802.heraldphids.php',1556231690,NULL),('phabricator:20130802.heraldphidukey.sql',1556231690,NULL),('phabricator:20130802.heraldxactions.sql',1556231690,NULL),('phabricator:20130805.pasteedges.sql',1556231690,NULL),('phabricator:20130805.pastemailkey.sql',1556231690,NULL),('phabricator:20130805.pastemailkeypop.php',1556231690,NULL),('phabricator:20130814.usercustom.sql',1556231690,NULL),('phabricator:20130820.file-mailkey-populate.php',1556231691,NULL),('phabricator:20130820.filemailkey.sql',1556231691,NULL),('phabricator:20130820.filexactions.sql',1556231691,NULL),('phabricator:20130820.releephxactions.sql',1556231690,NULL),('phabricator:20130826.divinernode.sql',1556231691,NULL),('phabricator:20130912.maniphest.1.touch.sql',1556231691,NULL),('phabricator:20130912.maniphest.2.created.sql',1556231691,NULL),('phabricator:20130912.maniphest.3.nameindex.sql',1556231691,NULL),('phabricator:20130912.maniphest.4.fillindex.php',1556231691,NULL),('phabricator:20130913.maniphest.1.migratesearch.php',1556231691,NULL),('phabricator:20130914.usercustom.sql',1556231691,NULL),('phabricator:20130915.maniphestcustom.sql',1556231691,NULL),('phabricator:20130915.maniphestmigrate.php',1556231691,NULL),('phabricator:20130915.maniphestqdrop.sql',1556231691,NULL),('phabricator:20130919.mfieldconf.php',1556231691,NULL),('phabricator:20130920.repokeyspolicy.sql',1556231691,NULL),('phabricator:20130921.mtransactions.sql',1556231691,NULL),('phabricator:20130921.xmigratemaniphest.php',1556231691,NULL),('phabricator:20130923.mrename.sql',1556231691,NULL),('phabricator:20130924.mdraftkey.sql',1556231691,NULL),('phabricator:20130925.mpolicy.sql',1556231691,NULL),('phabricator:20130925.xpolicy.sql',1556231691,NULL),('phabricator:20130926.dcustom.sql',1556231691,NULL),('phabricator:20130926.dinkeys.sql',1556231691,NULL),('phabricator:20130926.dinline.php',1556231691,NULL),('phabricator:20130927.audiomacro.sql',1556231691,NULL),('phabricator:20130929.filepolicy.sql',1556231691,NULL),('phabricator:20131004.dxedgekey.sql',1556231691,NULL),('phabricator:20131004.dxreviewers.php',1556231691,NULL),('phabricator:20131006.hdisable.sql',1556231691,NULL),('phabricator:20131010.pstorage.sql',1556231691,NULL),('phabricator:20131015.cpolicy.sql',1556231691,NULL),('phabricator:20131020.col1.sql',1556231691,NULL),('phabricator:20131020.harbormaster.sql',1556231691,NULL),('phabricator:20131020.pcustom.sql',1556231691,NULL),('phabricator:20131020.pxaction.sql',1556231691,NULL),('phabricator:20131020.pxactionmig.php',1556231691,NULL),('phabricator:20131025.repopush.sql',1556231691,NULL),('phabricator:20131026.commitstatus.sql',1556231691,NULL),('phabricator:20131030.repostatusmessage.sql',1556231691,NULL),('phabricator:20131031.vcspassword.sql',1556231691,NULL),('phabricator:20131105.buildstep.sql',1556231691,NULL),('phabricator:20131106.diffphid.1.col.sql',1556231691,NULL),('phabricator:20131106.diffphid.2.mig.php',1556231691,NULL),('phabricator:20131106.diffphid.3.key.sql',1556231691,NULL),('phabricator:20131106.nuance-v0.sql',1556231691,NULL),('phabricator:20131107.buildlog.sql',1556231691,NULL),('phabricator:20131112.userverified.1.col.sql',1556231691,NULL),('phabricator:20131112.userverified.2.mig.php',1556231691,NULL),('phabricator:20131118.ownerorder.php',1556231691,NULL),('phabricator:20131119.passphrase.sql',1556231691,NULL),('phabricator:20131120.nuancesourcetype.sql',1556231691,NULL),('phabricator:20131121.passphraseedge.sql',1556231691,NULL),('phabricator:20131121.repocredentials.1.col.sql',1556231691,NULL),('phabricator:20131121.repocredentials.2.mig.php',1556231691,NULL),('phabricator:20131122.repomirror.sql',1556231691,NULL),('phabricator:20131123.drydockblueprintpolicy.sql',1556231691,NULL),('phabricator:20131129.drydockresourceblueprint.sql',1556231691,NULL),('phabricator:20131204.pushlog.sql',1556231691,NULL),('phabricator:20131205.buildsteporder.sql',1556231691,NULL),('phabricator:20131205.buildstepordermig.php',1556231691,NULL),('phabricator:20131205.buildtargets.sql',1556231691,NULL),('phabricator:20131206.phragment.sql',1556231691,NULL),('phabricator:20131206.phragmentnull.sql',1556231691,NULL),('phabricator:20131208.phragmentsnapshot.sql',1556231691,NULL),('phabricator:20131211.phragmentedges.sql',1556231691,NULL),('phabricator:20131217.pushlogphid.1.col.sql',1556231691,NULL),('phabricator:20131217.pushlogphid.2.mig.php',1556231691,NULL),('phabricator:20131217.pushlogphid.3.key.sql',1556231692,NULL),('phabricator:20131219.pxdrop.sql',1556231692,NULL),('phabricator:20131224.harbormanual.sql',1556231692,NULL),('phabricator:20131227.heraldobject.sql',1556231692,NULL),('phabricator:20131231.dropshortcut.sql',1556231692,NULL),('phabricator:20131302.maniphestvalue.sql',1556231689,NULL),('phabricator:20140104.harbormastercmd.sql',1556231692,NULL),('phabricator:20140106.macromailkey.1.sql',1556231692,NULL),('phabricator:20140106.macromailkey.2.php',1556231692,NULL),('phabricator:20140108.ddbpname.1.sql',1556231692,NULL),('phabricator:20140108.ddbpname.2.php',1556231692,NULL),('phabricator:20140109.ddxactions.sql',1556231692,NULL),('phabricator:20140109.projectcolumnsdates.sql',1556231692,NULL),('phabricator:20140113.legalpadsig.1.sql',1556231692,NULL),('phabricator:20140113.legalpadsig.2.php',1556231692,NULL),('phabricator:20140115.auth.1.id.sql',1556231692,NULL),('phabricator:20140115.auth.2.expires.sql',1556231692,NULL),('phabricator:20140115.auth.3.unlimit.php',1556231692,NULL),('phabricator:20140115.legalpadsigkey.sql',1556231692,NULL),('phabricator:20140116.reporefcursor.sql',1556231692,NULL),('phabricator:20140126.diff.1.parentrevisionid.sql',1556231692,NULL),('phabricator:20140126.diff.2.repositoryphid.sql',1556231692,NULL),('phabricator:20140130.dash.1.board.sql',1556231692,NULL),('phabricator:20140130.dash.2.panel.sql',1556231692,NULL),('phabricator:20140130.dash.3.boardxaction.sql',1556231692,NULL),('phabricator:20140130.dash.4.panelxaction.sql',1556231692,NULL),('phabricator:20140130.mail.1.retry.sql',1556231692,NULL),('phabricator:20140130.mail.2.next.sql',1556231692,NULL),('phabricator:20140201.gc.1.mailsent.sql',1556231692,NULL),('phabricator:20140201.gc.2.mailreceived.sql',1556231692,NULL),('phabricator:20140205.cal.1.rename.sql',1556231692,NULL),('phabricator:20140205.cal.2.phid-col.sql',1556231692,NULL),('phabricator:20140205.cal.3.phid-mig.php',1556231692,NULL),('phabricator:20140205.cal.4.phid-key.sql',1556231692,NULL),('phabricator:20140210.herald.rule-condition-mig.php',1556231692,NULL),('phabricator:20140210.projcfield.1.blurb.php',1556231692,NULL),('phabricator:20140210.projcfield.2.piccol.sql',1556231692,NULL),('phabricator:20140210.projcfield.3.picmig.sql',1556231692,NULL),('phabricator:20140210.projcfield.4.memmig.sql',1556231692,NULL),('phabricator:20140210.projcfield.5.dropprofile.sql',1556231692,NULL),('phabricator:20140211.dx.1.nullablechangesetid.sql',1556231692,NULL),('phabricator:20140211.dx.2.migcommenttext.php',1556231692,NULL),('phabricator:20140211.dx.3.migsubscriptions.sql',1556231692,NULL),('phabricator:20140211.dx.999.drop.relationships.sql',1556231692,NULL),('phabricator:20140212.dx.1.armageddon.php',1556231692,NULL),('phabricator:20140214.clean.1.legacycommentid.sql',1556231692,NULL),('phabricator:20140214.clean.2.dropcomment.sql',1556231692,NULL),('phabricator:20140214.clean.3.dropinline.sql',1556231692,NULL),('phabricator:20140218.differentialdraft.sql',1556231692,NULL),('phabricator:20140218.passwords.1.extend.sql',1556231692,NULL),('phabricator:20140218.passwords.2.prefix.sql',1556231692,NULL),('phabricator:20140218.passwords.3.vcsextend.sql',1556231692,NULL),('phabricator:20140218.passwords.4.vcs.php',1556231692,NULL),('phabricator:20140223.bigutf8scratch.sql',1556231692,NULL),('phabricator:20140224.dxclean.1.datecommitted.sql',1556231692,NULL),('phabricator:20140226.dxcustom.1.fielddata.php',1556231692,NULL),('phabricator:20140226.dxcustom.99.drop.sql',1556231692,NULL),('phabricator:20140228.dxcomment.1.sql',1556231692,NULL),('phabricator:20140305.diviner.1.slugcol.sql',1556231692,NULL),('phabricator:20140305.diviner.2.slugkey.sql',1556231692,NULL),('phabricator:20140311.mdroplegacy.sql',1556231692,NULL),('phabricator:20140314.projectcolumn.1.statuscol.sql',1556231692,NULL),('phabricator:20140314.projectcolumn.2.statuskey.sql',1556231692,NULL),('phabricator:20140317.mupdatedkey.sql',1556231692,NULL),('phabricator:20140321.harbor.1.bxaction.sql',1556231692,NULL),('phabricator:20140321.mstatus.1.col.sql',1556231692,NULL),('phabricator:20140321.mstatus.2.mig.php',1556231692,NULL),('phabricator:20140323.harbor.1.renames.php',1556231692,NULL),('phabricator:20140323.harbor.2.message.sql',1556231692,NULL),('phabricator:20140325.push.1.event.sql',1556231692,NULL),('phabricator:20140325.push.2.eventphid.sql',1556231692,NULL),('phabricator:20140325.push.3.groups.php',1556231692,NULL),('phabricator:20140325.push.4.prune.sql',1556231692,NULL),('phabricator:20140326.project.1.colxaction.sql',1556231692,NULL),('phabricator:20140328.releeph.1.productxaction.sql',1556231692,NULL),('phabricator:20140330.flagtext.sql',1556231692,NULL),('phabricator:20140402.actionlog.sql',1556231692,NULL),('phabricator:20140410.accountsecret.1.sql',1556231692,NULL),('phabricator:20140410.accountsecret.2.php',1556231692,NULL),('phabricator:20140416.harbor.1.sql',1556231692,NULL),('phabricator:20140420.rel.1.objectphid.sql',1556231692,NULL),('phabricator:20140420.rel.2.objectmig.php',1556231692,NULL),('phabricator:20140421.slowvotecolumnsisclosed.sql',1556231692,NULL),('phabricator:20140423.session.1.hisec.sql',1556231692,NULL),('phabricator:20140427.mfactor.1.sql',1556231692,NULL),('phabricator:20140430.auth.1.partial.sql',1556231692,NULL),('phabricator:20140430.dash.1.paneltype.sql',1556231692,NULL),('phabricator:20140430.dash.2.edge.sql',1556231692,NULL),('phabricator:20140501.passphraselockcredential.sql',1556231692,NULL),('phabricator:20140501.remove.1.dlog.sql',1556231692,NULL),('phabricator:20140507.smstable.sql',1556231692,NULL),('phabricator:20140509.coverage.1.sql',1556231692,NULL),('phabricator:20140509.dashboardlayoutconfig.sql',1556231692,NULL),('phabricator:20140512.dparents.1.sql',1556231692,NULL),('phabricator:20140514.harbormasterbuildabletransaction.sql',1556231692,NULL),('phabricator:20140514.pholiomockclose.sql',1556231692,NULL),('phabricator:20140515.trust-emails.sql',1556231692,NULL),('phabricator:20140517.dxbinarycache.sql',1556231692,NULL),('phabricator:20140518.dxmorebinarycache.sql',1556231693,NULL),('phabricator:20140519.dashboardinstall.sql',1556231693,NULL),('phabricator:20140520.authtemptoken.sql',1556231693,NULL),('phabricator:20140521.projectslug.1.create.sql',1556231693,NULL),('phabricator:20140521.projectslug.2.mig.php',1556231693,NULL),('phabricator:20140522.projecticon.sql',1556231693,NULL),('phabricator:20140524.auth.mfa.cache.sql',1556231693,NULL),('phabricator:20140525.hunkmodern.sql',1556231693,NULL),('phabricator:20140615.pholioedit.1.sql',1556231693,NULL),('phabricator:20140615.pholioedit.2.sql',1556231693,NULL),('phabricator:20140617.daemon.explicit-argv.sql',1556231693,NULL),('phabricator:20140617.daemonlog.sql',1556231693,NULL),('phabricator:20140624.projcolor.1.sql',1556231693,NULL),('phabricator:20140624.projcolor.2.sql',1556231693,NULL),('phabricator:20140629.dasharchive.1.sql',1556231693,NULL),('phabricator:20140629.legalsig.1.sql',1556231693,NULL),('phabricator:20140629.legalsig.2.php',1556231693,NULL),('phabricator:20140701.legalexemption.1.sql',1556231693,NULL),('phabricator:20140701.legalexemption.2.sql',1556231693,NULL),('phabricator:20140703.legalcorp.1.sql',1556231693,NULL),('phabricator:20140703.legalcorp.2.sql',1556231693,NULL),('phabricator:20140703.legalcorp.3.sql',1556231693,NULL),('phabricator:20140703.legalcorp.4.sql',1556231693,NULL),('phabricator:20140703.legalcorp.5.sql',1556231693,NULL),('phabricator:20140704.harbormasterstep.1.sql',1556231693,NULL),('phabricator:20140704.harbormasterstep.2.sql',1556231693,NULL),('phabricator:20140704.legalpreamble.1.sql',1556231693,NULL),('phabricator:20140706.harbormasterdepend.1.php',1556231693,NULL),('phabricator:20140706.pedge.1.sql',1556231693,NULL),('phabricator:20140711.pnames.1.sql',1556231693,NULL),('phabricator:20140711.pnames.2.php',1556231693,NULL),('phabricator:20140711.workerpriority.sql',1556231693,NULL),('phabricator:20140712.projcoluniq.sql',1556231693,NULL),('phabricator:20140722.appname.php',1556231693,NULL),('phabricator:20140722.audit.1.xactions.sql',1556231693,NULL),('phabricator:20140722.audit.2.comments.sql',1556231693,NULL),('phabricator:20140722.audit.3.miginlines.php',1556231693,NULL),('phabricator:20140722.audit.4.migtext.php',1556231693,NULL),('phabricator:20140722.renameauth.php',1556231693,NULL),('phabricator:20140723.apprenamexaction.sql',1556231693,NULL),('phabricator:20140725.audit.1.migxactions.php',1556231693,NULL),('phabricator:20140731.audit.1.subscribers.php',1556231693,NULL),('phabricator:20140731.cancdn.php',1556231693,NULL),('phabricator:20140731.harbormasterstepdesc.sql',1556231693,NULL),('phabricator:20140805.boardcol.1.sql',1556231693,NULL),('phabricator:20140805.boardcol.2.php',1556231693,NULL),('phabricator:20140807.harbormastertargettime.sql',1556231693,NULL),('phabricator:20140808.boardprop.1.sql',1556231693,NULL),('phabricator:20140808.boardprop.2.sql',1556231693,NULL),('phabricator:20140808.boardprop.3.php',1556231693,NULL),('phabricator:20140811.blob.1.sql',1556231693,NULL),('phabricator:20140811.blob.2.sql',1556231693,NULL),('phabricator:20140812.projkey.1.sql',1556231693,NULL),('phabricator:20140812.projkey.2.sql',1556231693,NULL),('phabricator:20140814.passphrasecredentialconduit.sql',1556231693,NULL),('phabricator:20140815.cancdncase.php',1556231693,NULL),('phabricator:20140818.harbormasterindex.1.sql',1556231693,NULL),('phabricator:20140821.harbormasterbuildgen.1.sql',1556231693,NULL),('phabricator:20140822.daemonenvhash.sql',1556231693,NULL),('phabricator:20140902.almanacdevice.1.sql',1556231693,NULL),('phabricator:20140904.macroattach.php',1556231693,NULL),('phabricator:20140914.betaproto.php',1556231693,NULL),('phabricator:20140917.project.canlock.sql',1556231693,NULL),('phabricator:20140918.schema.1.dropaudit.sql',1556231693,NULL),('phabricator:20140918.schema.2.dropauditinline.sql',1556231693,NULL),('phabricator:20140918.schema.3.wipecache.sql',1556231693,NULL),('phabricator:20140918.schema.4.cachetype.sql',1556231693,NULL),('phabricator:20140918.schema.5.slowvote.sql',1556231693,NULL),('phabricator:20140919.schema.01.calstatus.sql',1556231693,NULL),('phabricator:20140919.schema.02.calname.sql',1556231693,NULL),('phabricator:20140919.schema.03.dropaux.sql',1556231693,NULL),('phabricator:20140919.schema.04.droptaskproj.sql',1556231693,NULL),('phabricator:20140926.schema.01.droprelev.sql',1556231693,NULL),('phabricator:20140926.schema.02.droprelreqev.sql',1556231693,NULL),('phabricator:20140926.schema.03.dropldapinfo.sql',1556231693,NULL),('phabricator:20140926.schema.04.dropoauthinfo.sql',1556231693,NULL),('phabricator:20140926.schema.05.dropprojaffil.sql',1556231693,NULL),('phabricator:20140926.schema.06.dropsubproject.sql',1556231693,NULL),('phabricator:20140926.schema.07.droppondcom.sql',1556231693,NULL),('phabricator:20140927.schema.01.dropsearchq.sql',1556231693,NULL),('phabricator:20140927.schema.02.pholio1.sql',1556231693,NULL),('phabricator:20140927.schema.03.pholio2.sql',1556231693,NULL),('phabricator:20140927.schema.04.pholio3.sql',1556231693,NULL),('phabricator:20140927.schema.05.phragment1.sql',1556231693,NULL),('phabricator:20140927.schema.06.releeph1.sql',1556231693,NULL),('phabricator:20141001.schema.01.version.sql',1556231693,NULL),('phabricator:20141001.schema.02.taskmail.sql',1556231693,NULL),('phabricator:20141002.schema.01.liskcounter.sql',1556231693,NULL),('phabricator:20141002.schema.02.draftnull.sql',1556231693,NULL),('phabricator:20141004.currency.01.sql',1556231693,NULL),('phabricator:20141004.currency.02.sql',1556231693,NULL),('phabricator:20141004.currency.03.sql',1556231693,NULL),('phabricator:20141004.currency.04.sql',1556231693,NULL),('phabricator:20141004.currency.05.sql',1556231693,NULL),('phabricator:20141004.currency.06.sql',1556231693,NULL),('phabricator:20141004.harborliskcounter.sql',1556231693,NULL),('phabricator:20141016.almanac.device.sql',1556231694,NULL),('phabricator:20141016.almanac.dxaction.sql',1556231694,NULL),('phabricator:20141016.almanac.interface.sql',1556231694,NULL),('phabricator:20141016.almanac.network.sql',1556231694,NULL),('phabricator:20141016.almanac.nxaction.sql',1556231694,NULL),('phabricator:20141016.almanac.service.sql',1556231694,NULL),('phabricator:20141016.almanac.sxaction.sql',1556231694,NULL),('phabricator:20141017.almanac.binding.sql',1556231694,NULL),('phabricator:20141017.almanac.bxaction.sql',1556231694,NULL),('phabricator:20141025.phriction.1.xaction.sql',1556231694,NULL),('phabricator:20141025.phriction.2.xaction.sql',1556231694,NULL),('phabricator:20141025.phriction.mailkey.sql',1556231694,NULL),('phabricator:20141103.almanac.1.delprop.sql',1556231694,NULL),('phabricator:20141103.almanac.2.addprop.sql',1556231694,NULL),('phabricator:20141104.almanac.3.edge.sql',1556231694,NULL),('phabricator:20141105.ssh.1.rename.sql',1556231694,NULL),('phabricator:20141106.dropold.sql',1556231694,NULL),('phabricator:20141106.uniqdrafts.php',1556231694,NULL),('phabricator:20141107.phriction.policy.1.sql',1556231694,NULL),('phabricator:20141107.phriction.policy.2.php',1556231694,NULL),('phabricator:20141107.phriction.popkeys.php',1556231694,NULL),('phabricator:20141107.ssh.1.colname.sql',1556231694,NULL),('phabricator:20141107.ssh.2.keyhash.sql',1556231694,NULL),('phabricator:20141107.ssh.3.keyindex.sql',1556231694,NULL),('phabricator:20141107.ssh.4.keymig.php',1556231694,NULL),('phabricator:20141107.ssh.5.indexnull.sql',1556231694,NULL),('phabricator:20141107.ssh.6.indexkey.sql',1556231694,NULL),('phabricator:20141107.ssh.7.colnull.sql',1556231694,NULL),('phabricator:20141113.auditdupes.php',1556231694,NULL),('phabricator:20141118.diffxaction.sql',1556231694,NULL),('phabricator:20141119.commitpedge.sql',1556231694,NULL),('phabricator:20141119.differential.diff.policy.sql',1556231694,NULL),('phabricator:20141119.sshtrust.sql',1556231694,NULL),('phabricator:20141123.taskpriority.1.sql',1556231694,NULL),('phabricator:20141123.taskpriority.2.sql',1556231694,NULL),('phabricator:20141210.maniphestsubscribersmig.1.sql',1556231694,NULL),('phabricator:20141210.maniphestsubscribersmig.2.sql',1556231694,NULL),('phabricator:20141210.reposervice.sql',1556231694,NULL),('phabricator:20141212.conduittoken.sql',1556231694,NULL),('phabricator:20141215.almanacservicetype.sql',1556231694,NULL),('phabricator:20141217.almanacdevicelock.sql',1556231694,NULL),('phabricator:20141217.almanaclock.sql',1556231694,NULL),('phabricator:20141218.maniphestcctxn.php',1556231694,NULL),('phabricator:20141222.maniphestprojtxn.php',1556231694,NULL),('phabricator:20141223.daemonloguser.sql',1556231694,NULL),('phabricator:20141223.daemonobjectphid.sql',1556231694,NULL),('phabricator:20141230.pasteeditpolicycolumn.sql',1556231694,NULL),('phabricator:20141230.pasteeditpolicyexisting.sql',1556231694,NULL),('phabricator:20150102.policyname.php',1556231694,NULL),('phabricator:20150102.tasksubscriber.sql',1556231694,NULL),('phabricator:20150105.conpsearch.sql',1556231694,NULL),('phabricator:20150114.oauthserver.client.policy.sql',1556231694,NULL),('phabricator:20150115.applicationemails.sql',1556231694,NULL),('phabricator:20150115.trigger.1.sql',1556231694,NULL),('phabricator:20150115.trigger.2.sql',1556231694,NULL),('phabricator:20150116.maniphestapplicationemails.php',1556231694,NULL),('phabricator:20150120.maniphestdefaultauthor.php',1556231694,NULL),('phabricator:20150124.subs.1.sql',1556231694,NULL),('phabricator:20150129.pastefileapplicationemails.php',1556231694,NULL),('phabricator:20150205.authprovider.autologin.sql',1556231695,NULL),('phabricator:20150205.daemonenv.sql',1556231695,NULL),('phabricator:20150209.invite.sql',1556231695,NULL),('phabricator:20150209.oauthclient.trust.sql',1556231695,NULL),('phabricator:20150210.invitephid.sql',1556231695,NULL),('phabricator:20150212.legalpad.session.1.sql',1556231695,NULL),('phabricator:20150212.legalpad.session.2.sql',1556231695,NULL),('phabricator:20150219.scratch.nonmutable.sql',1556231695,NULL),('phabricator:20150223.daemon.1.id.sql',1556231695,NULL),('phabricator:20150223.daemon.2.idlegacy.sql',1556231695,NULL),('phabricator:20150223.daemon.3.idkey.sql',1556231695,NULL),('phabricator:20150312.filechunk.1.sql',1556231695,NULL),('phabricator:20150312.filechunk.2.sql',1556231695,NULL),('phabricator:20150312.filechunk.3.sql',1556231695,NULL),('phabricator:20150317.conpherence.isroom.1.sql',1556231695,NULL),('phabricator:20150317.conpherence.isroom.2.sql',1556231695,NULL),('phabricator:20150317.conpherence.policy.sql',1556231695,NULL),('phabricator:20150410.nukeruleedit.sql',1556231695,NULL),('phabricator:20150420.invoice.1.sql',1556231695,NULL),('phabricator:20150420.invoice.2.sql',1556231695,NULL),('phabricator:20150425.isclosed.sql',1556231695,NULL),('phabricator:20150427.calendar.1.edge.sql',1556231695,NULL),('phabricator:20150427.calendar.1.xaction.sql',1556231695,NULL),('phabricator:20150427.calendar.2.xaction.sql',1556231695,NULL),('phabricator:20150428.calendar.1.iscancelled.sql',1556231695,NULL),('phabricator:20150428.calendar.1.name.sql',1556231695,NULL),('phabricator:20150429.calendar.1.invitee.sql',1556231695,NULL),('phabricator:20150430.calendar.1.policies.sql',1556231695,NULL),('phabricator:20150430.multimeter.1.sql',1556231695,NULL),('phabricator:20150430.multimeter.2.host.sql',1556231695,NULL),('phabricator:20150430.multimeter.3.viewer.sql',1556231695,NULL),('phabricator:20150430.multimeter.4.context.sql',1556231695,NULL),('phabricator:20150430.multimeter.5.label.sql',1556231695,NULL),('phabricator:20150501.calendar.1.reply.sql',1556231695,NULL),('phabricator:20150501.calendar.2.reply.php',1556231695,NULL),('phabricator:20150501.conpherencepics.sql',1556231695,NULL),('phabricator:20150503.repositorysymbols.1.sql',1556231695,NULL),('phabricator:20150503.repositorysymbols.2.php',1556231695,NULL),('phabricator:20150503.repositorysymbols.3.sql',1556231695,NULL),('phabricator:20150504.symbolsproject.1.php',1556231695,NULL),('phabricator:20150504.symbolsproject.2.sql',1556231695,NULL),('phabricator:20150506.calendarunnamedevents.1.php',1556231695,NULL),('phabricator:20150507.calendar.1.isallday.sql',1556231695,NULL),('phabricator:20150513.user.cache.1.sql',1556231695,NULL),('phabricator:20150514.calendar.status.sql',1556231695,NULL),('phabricator:20150514.phame.blog.xaction.sql',1556231695,NULL),('phabricator:20150514.user.cache.2.sql',1556231695,NULL),('phabricator:20150515.phame.post.xaction.sql',1556231695,NULL),('phabricator:20150515.project.mailkey.1.sql',1556231695,NULL),('phabricator:20150515.project.mailkey.2.php',1556231695,NULL),('phabricator:20150519.calendar.calendaricon.sql',1556231695,NULL),('phabricator:20150521.releephrepository.sql',1556231695,NULL),('phabricator:20150525.diff.hidden.1.sql',1556231695,NULL),('phabricator:20150526.owners.mailkey.1.sql',1556231695,NULL),('phabricator:20150526.owners.mailkey.2.php',1556231695,NULL),('phabricator:20150526.owners.xaction.sql',1556231695,NULL),('phabricator:20150527.calendar.recurringevents.sql',1556231695,NULL),('phabricator:20150601.spaces.1.namespace.sql',1556231695,NULL),('phabricator:20150601.spaces.2.xaction.sql',1556231695,NULL),('phabricator:20150602.mlist.1.sql',1556231695,NULL),('phabricator:20150602.mlist.2.php',1556231695,NULL),('phabricator:20150604.spaces.1.sql',1556231695,NULL),('phabricator:20150605.diviner.edges.sql',1556231695,NULL),('phabricator:20150605.diviner.editPolicy.sql',1556231695,NULL),('phabricator:20150605.diviner.xaction.sql',1556231695,NULL),('phabricator:20150606.mlist.1.php',1556231695,NULL),('phabricator:20150609.inline.sql',1556231695,NULL),('phabricator:20150609.spaces.1.pholio.sql',1556231695,NULL),('phabricator:20150609.spaces.2.maniphest.sql',1556231695,NULL),('phabricator:20150610.spaces.1.desc.sql',1556231695,NULL),('phabricator:20150610.spaces.2.edge.sql',1556231695,NULL),('phabricator:20150610.spaces.3.archive.sql',1556231695,NULL),('phabricator:20150611.spaces.1.mailxaction.sql',1556231695,NULL),('phabricator:20150611.spaces.2.appmail.sql',1556231695,NULL),('phabricator:20150616.divinerrepository.sql',1556231695,NULL),('phabricator:20150617.harbor.1.lint.sql',1556231695,NULL),('phabricator:20150617.harbor.2.unit.sql',1556231695,NULL),('phabricator:20150618.harbor.1.planauto.sql',1556231695,NULL),('phabricator:20150618.harbor.2.stepauto.sql',1556231695,NULL),('phabricator:20150618.harbor.3.buildauto.sql',1556231695,NULL),('phabricator:20150619.conpherencerooms.1.sql',1556231695,NULL),('phabricator:20150619.conpherencerooms.2.sql',1556231695,NULL),('phabricator:20150619.conpherencerooms.3.sql',1556231695,NULL),('phabricator:20150621.phrase.1.sql',1556231695,NULL),('phabricator:20150621.phrase.2.sql',1556231695,NULL),('phabricator:20150622.bulk.1.job.sql',1556231695,NULL),('phabricator:20150622.bulk.2.task.sql',1556231695,NULL),('phabricator:20150622.bulk.3.xaction.sql',1556231695,NULL),('phabricator:20150622.bulk.4.edge.sql',1556231696,NULL),('phabricator:20150622.metamta.1.phid-col.sql',1556231696,NULL),('phabricator:20150622.metamta.2.phid-mig.php',1556231696,NULL),('phabricator:20150622.metamta.3.phid-key.sql',1556231696,NULL),('phabricator:20150622.metamta.4.actor-phid-col.sql',1556231696,NULL),('phabricator:20150622.metamta.5.actor-phid-mig.php',1556231696,NULL),('phabricator:20150622.metamta.6.actor-phid-key.sql',1556231696,NULL),('phabricator:20150624.spaces.1.repo.sql',1556231696,NULL),('phabricator:20150626.spaces.1.calendar.sql',1556231696,NULL),('phabricator:20150630.herald.1.sql',1556231696,NULL),('phabricator:20150630.herald.2.sql',1556231696,NULL),('phabricator:20150701.herald.1.sql',1556231696,NULL),('phabricator:20150701.herald.2.sql',1556231696,NULL),('phabricator:20150702.spaces.1.slowvote.sql',1556231696,NULL),('phabricator:20150706.herald.1.sql',1556231696,NULL),('phabricator:20150707.herald.1.sql',1556231696,NULL),('phabricator:20150708.arcanistproject.sql',1556231696,NULL),('phabricator:20150708.herald.1.sql',1556231696,NULL),('phabricator:20150708.herald.2.sql',1556231696,NULL),('phabricator:20150708.herald.3.sql',1556231696,NULL),('phabricator:20150712.badges.1.sql',1556231696,NULL),('phabricator:20150714.spaces.countdown.1.sql',1556231696,NULL),('phabricator:20150717.herald.1.sql',1556231696,NULL),('phabricator:20150719.countdown.1.sql',1556231696,NULL),('phabricator:20150719.countdown.2.sql',1556231696,NULL),('phabricator:20150719.countdown.3.sql',1556231696,NULL),('phabricator:20150721.phurl.1.url.sql',1556231696,NULL),('phabricator:20150721.phurl.2.xaction.sql',1556231696,NULL),('phabricator:20150721.phurl.3.xactioncomment.sql',1556231696,NULL),('phabricator:20150721.phurl.4.url.sql',1556231696,NULL),('phabricator:20150721.phurl.5.edge.sql',1556231696,NULL),('phabricator:20150721.phurl.6.alias.sql',1556231696,NULL),('phabricator:20150721.phurl.7.authorphid.sql',1556231696,NULL),('phabricator:20150722.dashboard.1.sql',1556231696,NULL),('phabricator:20150722.dashboard.2.sql',1556231696,NULL),('phabricator:20150723.countdown.1.sql',1556231696,NULL),('phabricator:20150724.badges.comments.1.sql',1556231696,NULL),('phabricator:20150724.countdown.comments.1.sql',1556231696,NULL),('phabricator:20150725.badges.mailkey.1.sql',1556231696,NULL),('phabricator:20150725.badges.mailkey.2.php',1556231696,NULL),('phabricator:20150725.badges.viewpolicy.3.sql',1556231696,NULL),('phabricator:20150725.countdown.mailkey.1.sql',1556231696,NULL),('phabricator:20150725.countdown.mailkey.2.php',1556231696,NULL),('phabricator:20150725.slowvote.mailkey.1.sql',1556231696,NULL),('phabricator:20150725.slowvote.mailkey.2.php',1556231696,NULL),('phabricator:20150727.heraldaction.1.sql',1556231696,NULL),('phabricator:20150730.herald.1.sql',1556231696,NULL),('phabricator:20150730.herald.2.sql',1556231696,NULL),('phabricator:20150730.herald.3.sql',1556231696,NULL),('phabricator:20150730.herald.4.sql',1556231696,NULL),('phabricator:20150730.herald.5.sql',1556231696,NULL),('phabricator:20150730.herald.6.sql',1556231696,NULL),('phabricator:20150730.herald.7.sql',1556231696,NULL),('phabricator:20150803.herald.1.sql',1556231696,NULL),('phabricator:20150803.herald.2.sql',1556231696,NULL),('phabricator:20150804.ponder.answer.mailkey.1.sql',1556231696,NULL),('phabricator:20150804.ponder.answer.mailkey.2.php',1556231696,NULL),('phabricator:20150804.ponder.question.1.sql',1556231696,NULL),('phabricator:20150804.ponder.question.2.sql',1556231696,NULL),('phabricator:20150804.ponder.question.3.sql',1556231696,NULL),('phabricator:20150804.ponder.spaces.4.sql',1556231696,NULL),('phabricator:20150805.paste.status.1.sql',1556231696,NULL),('phabricator:20150805.paste.status.2.sql',1556231696,NULL),('phabricator:20150806.ponder.answer.1.sql',1556231696,NULL),('phabricator:20150806.ponder.editpolicy.2.sql',1556231696,NULL),('phabricator:20150806.ponder.status.1.sql',1556231696,NULL),('phabricator:20150806.ponder.status.2.sql',1556231696,NULL),('phabricator:20150806.ponder.status.3.sql',1556231696,NULL),('phabricator:20150808.ponder.vote.1.sql',1556231696,NULL),('phabricator:20150808.ponder.vote.2.sql',1556231696,NULL),('phabricator:20150812.ponder.answer.1.sql',1556231696,NULL),('phabricator:20150812.ponder.answer.2.sql',1556231696,NULL),('phabricator:20150814.harbormater.artifact.phid.sql',1556231696,NULL),('phabricator:20150815.owners.status.1.sql',1556231696,NULL),('phabricator:20150815.owners.status.2.sql',1556231696,NULL),('phabricator:20150823.nuance.queue.1.sql',1556231696,NULL),('phabricator:20150823.nuance.queue.2.sql',1556231696,NULL),('phabricator:20150823.nuance.queue.3.sql',1556231696,NULL),('phabricator:20150823.nuance.queue.4.sql',1556231696,NULL),('phabricator:20150828.ponder.wiki.1.sql',1556231696,NULL),('phabricator:20150829.ponder.dupe.1.sql',1556231696,NULL),('phabricator:20150904.herald.1.sql',1556231696,NULL),('phabricator:20150906.mailinglist.sql',1556231696,NULL),('phabricator:20150910.owners.custom.1.sql',1556231696,NULL),('phabricator:20150916.drydock.slotlocks.1.sql',1556231696,NULL),('phabricator:20150922.drydock.commands.1.sql',1556231696,NULL),('phabricator:20150923.drydock.resourceid.1.sql',1556231696,NULL),('phabricator:20150923.drydock.resourceid.2.sql',1556231696,NULL),('phabricator:20150923.drydock.resourceid.3.sql',1556231696,NULL),('phabricator:20150923.drydock.taskid.1.sql',1556231696,NULL),('phabricator:20150924.drydock.disable.1.sql',1556231696,NULL),('phabricator:20150924.drydock.status.1.sql',1556231696,NULL),('phabricator:20150928.drydock.rexpire.1.sql',1556231696,NULL),('phabricator:20150930.drydock.log.1.sql',1556231696,NULL),('phabricator:20151001.drydock.rname.1.sql',1556231696,NULL),('phabricator:20151002.dashboard.status.1.sql',1556231696,NULL),('phabricator:20151002.harbormaster.bparam.1.sql',1556231696,NULL),('phabricator:20151009.drydock.auth.1.sql',1556231696,NULL),('phabricator:20151010.drydock.auth.2.sql',1556231696,NULL),('phabricator:20151013.drydock.op.1.sql',1556231696,NULL),('phabricator:20151023.harborpolicy.1.sql',1556231696,NULL),('phabricator:20151023.harborpolicy.2.php',1556231696,NULL),('phabricator:20151023.patchduration.sql',1556231697,141072),('phabricator:20151030.harbormaster.initiator.sql',1556231697,14355),('phabricator:20151106.editengine.1.table.sql',1556231697,7000),('phabricator:20151106.editengine.2.xactions.sql',1556231697,6327),('phabricator:20151106.phame.post.mailkey.1.sql',1556231697,13453),('phabricator:20151106.phame.post.mailkey.2.php',1556231697,1570),('phabricator:20151107.phame.blog.mailkey.1.sql',1556231697,11087),('phabricator:20151107.phame.blog.mailkey.2.php',1556231697,970),('phabricator:20151108.phame.blog.joinpolicy.sql',1556231697,11189),('phabricator:20151108.xhpast.stderr.sql',1556231697,18926),('phabricator:20151109.phame.post.comments.1.sql',1556231697,7158),('phabricator:20151109.repository.coverage.1.sql',1556231697,1260),('phabricator:20151109.xhpast.db.1.sql',1556231697,3950),('phabricator:20151109.xhpast.db.2.sql',1556231697,1156),('phabricator:20151110.daemonenvhash.sql',1556231697,24270),('phabricator:20151111.phame.blog.archive.1.sql',1556231697,11808),('phabricator:20151111.phame.blog.archive.2.sql',1556231697,570),('phabricator:20151112.herald.edge.sql',1556231697,10237),('phabricator:20151116.owners.edge.sql',1556231697,10178),('phabricator:20151128.phame.blog.picture.1.sql',1556231697,12092),('phabricator:20151130.phurl.mailkey.1.sql',1556231697,9727),('phabricator:20151130.phurl.mailkey.2.php',1556231697,1287),('phabricator:20151202.versioneddraft.1.sql',1556231697,5191),('phabricator:20151207.editengine.1.sql',1556231697,48281),('phabricator:20151210.land.1.refphid.sql',1556231697,9677),('phabricator:20151210.land.2.refphid.php',1556231697,629),('phabricator:20151215.phame.1.autotitle.sql',1556231697,20604),('phabricator:20151218.key.1.keyphid.sql',1556231697,13167),('phabricator:20151218.key.2.keyphid.php',1556231697,423),('phabricator:20151219.proj.01.prislug.sql',1556231697,13742),('phabricator:20151219.proj.02.prislugkey.sql',1556231697,8362),('phabricator:20151219.proj.03.copyslug.sql',1556231697,517),('phabricator:20151219.proj.04.dropslugkey.sql',1556231697,6993),('phabricator:20151219.proj.05.dropslug.sql',1556231697,14034),('phabricator:20151219.proj.06.defaultpolicy.php',1556231697,1187),('phabricator:20151219.proj.07.viewnull.sql',1556231697,17899),('phabricator:20151219.proj.08.editnull.sql',1556231697,17020),('phabricator:20151219.proj.09.joinnull.sql',1556231697,17501),('phabricator:20151219.proj.10.subcolumns.sql',1556231697,77351),('phabricator:20151219.proj.11.subprojectphids.sql',1556231697,14306),('phabricator:20151221.search.1.version.sql',1556231697,5434),('phabricator:20151221.search.2.ownersngrams.sql',1556231697,5494),('phabricator:20151221.search.3.reindex.php',1556231697,84),('phabricator:20151223.proj.01.paths.sql',1556231697,15641),('phabricator:20151223.proj.02.depths.sql',1556231697,15239),('phabricator:20151223.proj.03.pathkey.sql',1556231697,9414),('phabricator:20151223.proj.04.keycol.sql',1556231697,16788),('phabricator:20151223.proj.05.updatekeys.php',1556231697,483),('phabricator:20151223.proj.06.uniq.sql',1556231697,10101),('phabricator:20151226.reop.1.sql',1556231697,12605),('phabricator:20151227.proj.01.materialize.sql',1556231697,586),('phabricator:20151231.proj.01.icon.php',1556231697,2511),('phabricator:20160102.badges.award.sql',1556231697,6329),('phabricator:20160110.repo.01.slug.sql',1556231697,20421),('phabricator:20160110.repo.02.slug.php',1556231697,678),('phabricator:20160111.repo.01.slugx.sql',1556231697,1338),('phabricator:20160112.repo.01.uri.sql',1556231697,5759),('phabricator:20160112.repo.02.uri.index.php',1556231697,105),('phabricator:20160113.propanel.1.storage.sql',1556231697,6417),('phabricator:20160113.propanel.2.xaction.sql',1556231697,7222),('phabricator:20160119.project.1.silence.sql',1556231697,547),('phabricator:20160122.project.1.boarddefault.php',1556231697,759),('phabricator:20160124.people.1.icon.sql',1556231697,10389),('phabricator:20160124.people.2.icondefault.sql',1556231697,597),('phabricator:20160128.repo.1.pull.sql',1556231697,6188),('phabricator:20160201.revision.properties.1.sql',1556231697,13671),('phabricator:20160201.revision.properties.2.sql',1556231697,582),('phabricator:20160202.board.1.proxy.sql',1556231697,11473),('phabricator:20160202.ipv6.1.sql',1556231697,29431),('phabricator:20160202.ipv6.2.php',1556231697,1039),('phabricator:20160206.cover.1.sql',1556231697,16645),('phabricator:20160208.task.1.sql',1556231697,17354),('phabricator:20160208.task.2.sql',1556231697,28687),('phabricator:20160208.task.3.sql',1556231697,21722),('phabricator:20160212.proj.1.sql',1556231697,18838),('phabricator:20160212.proj.2.sql',1556231697,682),('phabricator:20160215.owners.policy.1.sql',1556231698,13159),('phabricator:20160215.owners.policy.2.sql',1556231698,13532),('phabricator:20160215.owners.policy.3.sql',1556231698,781),('phabricator:20160215.owners.policy.4.sql',1556231698,575),('phabricator:20160218.callsigns.1.sql',1556231698,18754),('phabricator:20160221.almanac.1.devicen.sql',1556231698,5402),('phabricator:20160221.almanac.2.devicei.php',1556231698,86),('phabricator:20160221.almanac.3.servicen.sql',1556231698,5514),('phabricator:20160221.almanac.4.servicei.php',1556231698,88),('phabricator:20160221.almanac.5.networkn.sql',1556231698,5797),('phabricator:20160221.almanac.6.networki.php',1556231698,98),('phabricator:20160221.almanac.7.namespacen.sql',1556231698,6222),('phabricator:20160221.almanac.8.namespace.sql',1556231698,6967),('phabricator:20160221.almanac.9.namespacex.sql',1556231698,6258),('phabricator:20160222.almanac.1.properties.php',1556231698,1785),('phabricator:20160223.almanac.1.bound.sql',1556231698,12636),('phabricator:20160223.almanac.2.lockbind.sql',1556231698,555),('phabricator:20160223.almanac.3.devicelock.sql',1556231698,12370),('phabricator:20160223.almanac.4.servicelock.sql',1556231698,12403),('phabricator:20160223.paste.fileedges.php',1556231698,563),('phabricator:20160225.almanac.1.disablebinding.sql',1556231698,13239),('phabricator:20160225.almanac.2.stype.sql',1556231698,5306),('phabricator:20160225.almanac.3.stype.php',1556231698,854),('phabricator:20160227.harbormaster.1.plann.sql',1556231698,5517),('phabricator:20160227.harbormaster.2.plani.php',1556231698,85),('phabricator:20160303.drydock.1.bluen.sql',1556231698,5916),('phabricator:20160303.drydock.2.bluei.php',1556231698,84),('phabricator:20160303.drydock.3.edge.sql',1556231698,9299),('phabricator:20160308.nuance.01.disabled.sql',1556231698,11938),('phabricator:20160308.nuance.02.cursordata.sql',1556231698,5933),('phabricator:20160308.nuance.03.sourcen.sql',1556231698,5421),('phabricator:20160308.nuance.04.sourcei.php',1556231698,84),('phabricator:20160308.nuance.05.sourcename.sql',1556231698,14051),('phabricator:20160308.nuance.06.label.sql',1556231698,14773),('phabricator:20160308.nuance.07.itemtype.sql',1556231698,12745),('phabricator:20160308.nuance.08.itemkey.sql',1556231698,12490),('phabricator:20160308.nuance.09.itemcontainer.sql',1556231698,14099),('phabricator:20160308.nuance.10.itemkeyu.sql',1556231698,525),('phabricator:20160308.nuance.11.requestor.sql',1556231698,16661),('phabricator:20160308.nuance.12.queue.sql',1556231698,12884),('phabricator:20160316.lfs.01.token.resource.sql',1556231698,14175),('phabricator:20160316.lfs.02.token.user.sql',1556231698,10063),('phabricator:20160316.lfs.03.token.properties.sql',1556231698,10329),('phabricator:20160316.lfs.04.token.default.sql',1556231698,508),('phabricator:20160317.lfs.01.ref.sql',1556231698,5342),('phabricator:20160321.nuance.01.taskbridge.sql',1556231698,17760),('phabricator:20160322.nuance.01.itemcommand.sql',1556231698,4975),('phabricator:20160323.badgemigrate.sql',1556231698,1649),('phabricator:20160329.nuance.01.requestor.sql',1556231698,3782),('phabricator:20160329.nuance.02.requestorsource.sql',1556231698,4055),('phabricator:20160329.nuance.03.requestorxaction.sql',1556231698,4785),('phabricator:20160329.nuance.04.requestorcomment.sql',1556231698,4420),('phabricator:20160330.badges.migratequality.sql',1556231698,15822),('phabricator:20160330.badges.qualityxaction.mig.sql',1556231698,2799),('phabricator:20160404.oauth.1.xaction.sql',1556231698,6721),('phabricator:20160405.oauth.2.disable.sql',1556231698,10930),('phabricator:20160406.badges.ngrams.php',1556231698,97),('phabricator:20160406.badges.ngrams.sql',1556231698,6525),('phabricator:20160406.columns.1.php',1556231698,500),('phabricator:20160411.repo.1.version.sql',1556231698,5519),('phabricator:20160418.repouri.1.sql',1556231698,6074),('phabricator:20160418.repouri.2.sql',1556231698,11525),('phabricator:20160418.repoversion.1.sql',1556231698,10689),('phabricator:20160419.pushlog.1.sql',1556231698,14353),('phabricator:20160424.locks.1.sql',1556231698,10204),('phabricator:20160426.searchedge.sql',1556231698,9947),('phabricator:20160428.repo.1.urixaction.sql',1556231698,7021),('phabricator:20160503.repo.01.lpath.sql',1556231698,13307),('phabricator:20160503.repo.02.lpathkey.sql',1556231698,8490),('phabricator:20160503.repo.03.lpathmigrate.php',1556231698,504),('phabricator:20160503.repo.04.mirrormigrate.php',1556231698,850),('phabricator:20160503.repo.05.urimigrate.php',1556231698,424),('phabricator:20160510.repo.01.uriindex.php',1556231698,4595),('phabricator:20160513.owners.01.autoreview.sql',1556231698,10941),('phabricator:20160513.owners.02.autoreviewnone.sql',1556231698,564),('phabricator:20160516.owners.01.dominion.sql',1556231698,10783),('phabricator:20160516.owners.02.dominionstrong.sql',1556231698,572),('phabricator:20160517.oauth.01.edge.sql',1556231698,10687),('phabricator:20160518.ssh.01.activecol.sql',1556231698,10789),('phabricator:20160518.ssh.02.activeval.sql',1556231698,581),('phabricator:20160518.ssh.03.activekey.sql',1556231698,6783),('phabricator:20160519.ssh.01.xaction.sql',1556231698,6533),('phabricator:20160531.pref.01.xaction.sql',1556231698,7117),('phabricator:20160531.pref.02.datecreatecol.sql',1556231698,9742),('phabricator:20160531.pref.03.datemodcol.sql',1556231698,9161),('phabricator:20160531.pref.04.datecreateval.sql',1556231698,581),('phabricator:20160531.pref.05.datemodval.sql',1556231698,500),('phabricator:20160531.pref.06.phidcol.sql',1556231698,9802),('phabricator:20160531.pref.07.phidval.php',1556231698,812),('phabricator:20160601.user.01.cache.sql',1556231698,7441),('phabricator:20160601.user.02.copyprefs.php',1556231698,1761),('phabricator:20160601.user.03.removetime.sql',1556231698,15650),('phabricator:20160601.user.04.removetranslation.sql',1556231698,15109),('phabricator:20160601.user.05.removesex.sql',1556231698,14245),('phabricator:20160603.user.01.removedcenabled.sql',1556231698,13434),('phabricator:20160603.user.02.removedctab.sql',1556231698,14889),('phabricator:20160603.user.03.removedcvisible.sql',1556231698,14290),('phabricator:20160604.user.01.stringmailprefs.php',1556231698,605),('phabricator:20160604.user.02.removeimagecache.sql',1556231698,13598),('phabricator:20160605.user.01.prefnulluser.sql',1556231698,13603),('phabricator:20160605.user.02.prefbuiltin.sql',1556231698,9726),('phabricator:20160605.user.03.builtinunique.sql',1556231698,5808),('phabricator:20160616.phame.blog.header.1.sql',1556231698,10765),('phabricator:20160616.repo.01.oldref.sql',1556231698,5571),('phabricator:20160617.harbormaster.01.arelease.sql',1556231698,11995),('phabricator:20160618.phame.blog.subtitle.sql',1556231698,11187),('phabricator:20160620.phame.blog.parentdomain.2.sql',1556231698,11609),('phabricator:20160620.phame.blog.parentsite.1.sql',1556231698,13040),('phabricator:20160623.phame.blog.fulldomain.1.sql',1556231698,12008),('phabricator:20160623.phame.blog.fulldomain.2.sql',1556231698,564),('phabricator:20160623.phame.blog.fulldomain.3.sql',1556231698,1211),('phabricator:20160706.phame.blog.parentdomain.2.sql',1556231698,12418),('phabricator:20160706.phame.blog.parentsite.1.sql',1556231699,13036),('phabricator:20160707.calendar.01.stub.sql',1556231699,12754),('phabricator:20160711.files.01.builtin.sql',1556231699,15129),('phabricator:20160711.files.02.builtinkey.sql',1556231699,8836),('phabricator:20160713.event.01.host.sql',1556231699,15511),('phabricator:20160715.event.01.alldayfrom.sql',1556231699,14131),('phabricator:20160715.event.02.alldayto.sql',1556231699,12699),('phabricator:20160715.event.03.allday.php',1556231699,86),('phabricator:20160720.calendar.invitetxn.php',1556231699,1319),('phabricator:20160721.pack.01.pub.sql',1556231699,5812),('phabricator:20160721.pack.02.pubxaction.sql',1556231699,6139),('phabricator:20160721.pack.03.edge.sql',1556231699,10806),('phabricator:20160721.pack.04.pkg.sql',1556231699,6295),('phabricator:20160721.pack.05.pkgxaction.sql',1556231699,6625),('phabricator:20160721.pack.06.version.sql',1556231699,5517),('phabricator:20160721.pack.07.versionxaction.sql',1556231699,6541),('phabricator:20160722.pack.01.pubngrams.sql',1556231699,5991),('phabricator:20160722.pack.02.pkgngrams.sql',1556231699,6165),('phabricator:20160722.pack.03.versionngrams.sql',1556231699,5845),('phabricator:20160810.commit.01.summarylength.sql',1556231699,16647),('phabricator:20160824.connectionlog.sql',1556231699,3624),('phabricator:20160824.repohint.01.hint.sql',1556231699,5880),('phabricator:20160824.repohint.02.movebad.php',1556231699,610),('phabricator:20160824.repohint.03.nukebad.sql',1556231699,3549),('phabricator:20160825.ponder.sql',1556231699,635),('phabricator:20160829.pastebin.01.language.sql',1556231699,16331),('phabricator:20160829.pastebin.02.language.sql',1556231699,560),('phabricator:20160913.conpherence.topic.1.sql',1556231699,11148),('phabricator:20160919.repo.messagecount.sql',1556231699,10883),('phabricator:20160919.repo.messagedefault.sql',1556231699,3870),('phabricator:20160921.fileexternalrequest.sql',1556231699,6461),('phabricator:20160927.phurl.ngrams.php',1556231699,88),('phabricator:20160927.phurl.ngrams.sql',1556231699,5450),('phabricator:20160928.repo.messagecount.sql',1556231699,513),('phabricator:20160928.tokentoken.sql',1556231699,7220),('phabricator:20161003.cal.01.utcepoch.sql',1556231699,39888),('phabricator:20161003.cal.02.parameters.sql',1556231699,13545),('phabricator:20161004.cal.01.noepoch.php',1556231699,1824),('phabricator:20161005.cal.01.rrules.php',1556231699,313),('phabricator:20161005.cal.02.export.sql',1556231699,6093),('phabricator:20161005.cal.03.exportxaction.sql',1556231699,6495),('phabricator:20161005.conpherence.image.1.sql',1556231699,12059),('phabricator:20161005.conpherence.image.2.php',1556231699,85),('phabricator:20161011.conpherence.ngrams.php',1556231699,65),('phabricator:20161011.conpherence.ngrams.sql',1556231699,5332),('phabricator:20161012.cal.01.import.sql',1556231699,6181),('phabricator:20161012.cal.02.importxaction.sql',1556231699,6973),('phabricator:20161012.cal.03.eventimport.sql',1556231699,52644),('phabricator:20161013.cal.01.importlog.sql',1556231699,5063),('phabricator:20161016.conpherence.imagephids.sql',1556231699,10859),('phabricator:20161026.calendar.01.importtriggers.sql',1556231699,23297),('phabricator:20161027.calendar.01.externalinvitee.sql',1556231699,5726),('phabricator:20161031.calendar.01.seriesparent.sql',1556231699,13938),('phabricator:20161031.calendar.02.notifylog.sql',1556231699,5033),('phabricator:20161101.calendar.01.noholiday.sql',1556231699,3280),('phabricator:20161101.calendar.02.removecolumns.sql',1556231699,78114),('phabricator:20161104.calendar.01.availability.sql',1556231699,11128),('phabricator:20161104.calendar.02.availdefault.sql',1556231699,550),('phabricator:20161115.phamepost.01.subtitle.sql',1556231699,11909),('phabricator:20161115.phamepost.02.header.sql',1556231699,13239),('phabricator:20161121.cluster.01.hoststate.sql',1556231699,4824),('phabricator:20161124.search.01.stopwords.sql',1556231699,4622),('phabricator:20161125.search.01.stemmed.sql',1556231699,7243),('phabricator:20161130.search.01.manual.sql',1556231699,5811),('phabricator:20161130.search.02.rebuild.php',1556231699,1398),('phabricator:20161210.dashboards.01.author.sql',1556231699,11083),('phabricator:20161210.dashboards.02.author.php',1556231699,1611),('phabricator:20161211.menu.01.itemkey.sql',1556231699,4255),('phabricator:20161211.menu.02.itemprops.sql',1556231699,3566),('phabricator:20161211.menu.03.order.sql',1556231699,3844),('phabricator:20161212.dashboardpanel.01.author.sql',1556231699,10207),('phabricator:20161212.dashboardpanel.02.author.php',1556231699,836),('phabricator:20161212.dashboards.01.icon.sql',1556231699,11227),('phabricator:20161213.diff.01.hunks.php',1556231699,747),('phabricator:20161216.dashboard.ngram.01.sql',1556231699,10936),('phabricator:20161216.dashboard.ngram.02.php',1556231699,114),('phabricator:20170106.menu.01.customphd.sql',1556231699,10393),('phabricator:20170109.diff.01.commit.sql',1556231699,12971),('phabricator:20170119.menuitem.motivator.01.php',1556231699,407),('phabricator:20170131.dashboard.personal.01.php',1556231699,1445),('phabricator:20170301.subtype.01.col.sql',1556231699,12251),('phabricator:20170301.subtype.02.default.sql',1556231699,687),('phabricator:20170301.subtype.03.taskcol.sql',1556231699,17435),('phabricator:20170301.subtype.04.taskdefault.sql',1556231699,554),('phabricator:20170303.people.01.avatar.sql',1556231699,27615),('phabricator:20170313.reviewers.01.sql',1556231699,5349),('phabricator:20170316.rawfiles.01.php',1556231699,1720),('phabricator:20170320.reviewers.01.lastaction.sql',1556231699,11553),('phabricator:20170320.reviewers.02.lastcomment.sql',1556231699,10266),('phabricator:20170320.reviewers.03.migrate.php',1556231699,1127),('phabricator:20170322.reviewers.04.actor.sql',1556231699,10051),('phabricator:20170328.reviewers.01.void.sql',1556231699,11143),('phabricator:20170404.files.retroactive-content-hash.sql',1556231699,19835),('phabricator:20170406.hmac.01.keystore.sql',1556231699,5350),('phabricator:20170410.calendar.01.repair.php',1556231699,576),('phabricator:20170412.conpherence.01.picturecrop.sql',1556231699,499),('phabricator:20170413.conpherence.01.recentparty.sql',1556231700,11833),('phabricator:20170417.files.ngrams.sql',1556231700,5606),('phabricator:20170418.1.application.01.xaction.sql',1556231700,6959),('phabricator:20170418.1.application.02.edge.sql',1556231700,9907),('phabricator:20170418.files.isDeleted.sql',1556231700,16731),('phabricator:20170419.app.01.table.sql',1556231700,5395),('phabricator:20170419.thread.01.behind.sql',1556231700,11820),('phabricator:20170419.thread.02.status.sql',1556231700,11320),('phabricator:20170419.thread.03.touched.sql',1556231700,12098),('phabricator:20170424.user.01.verify.php',1556231700,450),('phabricator:20170427.owners.01.long.sql',1556231700,10936),('phabricator:20170504.1.slowvote.shuffle.sql',1556231700,13917),('phabricator:20170522.nuance.01.itemkey.sql',1556231700,13967),('phabricator:20170524.nuance.01.command.sql',1556231700,29175),('phabricator:20170524.nuance.02.commandstatus.sql',1556231700,10499),('phabricator:20170526.dropdifferentialdrafts.sql',1556231700,4528),('phabricator:20170526.milestones.php',1556231700,82),('phabricator:20170528.maniphestdupes.php',1556231700,407),('phabricator:20170612.repository.image.01.sql',1556231700,14513),('phabricator:20170614.taskstatus.sql',1556231700,22946),('phabricator:20170725.legalpad.date.01.sql',1556231700,1121),('phabricator:20170811.differential.01.status.php',1556231700,436),('phabricator:20170811.differential.02.modernstatus.sql',1556231700,1112),('phabricator:20170811.differential.03.modernxaction.php',1556231700,946),('phabricator:20170814.search.01.qconfig.sql',1556231700,5484),('phabricator:20170820.phame.01.post.views.sql',1556231700,12773),('phabricator:20170820.phame.02.post.views.sql',1556231700,492),('phabricator:20170824.search.01.saved.php',1556231700,1093),('phabricator:20170825.phame.01.post.views.sql',1556231700,14383),('phabricator:20170828.ferret.01.taskdoc.sql',1556231700,4720),('phabricator:20170828.ferret.02.taskfield.sql',1556231700,4430),('phabricator:20170828.ferret.03.taskngrams.sql',1556231700,4459),('phabricator:20170830.ferret.01.unique.sql',1556231700,11567),('phabricator:20170830.ferret.02.term.sql',1556231700,10544),('phabricator:20170905.ferret.01.diff.doc.sql',1556231700,4638),('phabricator:20170905.ferret.02.diff.field.sql',1556231700,4380),('phabricator:20170905.ferret.03.diff.ngrams.sql',1556231700,4849),('phabricator:20170907.ferret.01.user.doc.sql',1556231700,4719),('phabricator:20170907.ferret.02.user.field.sql',1556231700,4741),('phabricator:20170907.ferret.03.user.ngrams.sql',1556231700,4472),('phabricator:20170907.ferret.07.passphrase.doc.sql',1556231700,4554),('phabricator:20170907.ferret.08.passphrase.field.sql',1556231700,5115),('phabricator:20170907.ferret.09.passphrase.ngrams.sql',1556231700,4083),('phabricator:20170907.ferret.10.owners.doc.sql',1556231700,4723),('phabricator:20170907.ferret.11.owners.field.sql',1556231700,5061),('phabricator:20170907.ferret.12.owners.ngrams.sql',1556231700,4786),('phabricator:20170907.ferret.13.blog.doc.sql',1556231700,4252),('phabricator:20170907.ferret.14.blog.field.sql',1556231700,4923),('phabricator:20170907.ferret.15.blog.ngrams.sql',1556231700,4231),('phabricator:20170907.ferret.16.post.doc.sql',1556231700,4741),('phabricator:20170907.ferret.17.post.field.sql',1556231700,4888),('phabricator:20170907.ferret.18.post.ngrams.sql',1556231700,5208),('phabricator:20170907.ferret.19.project.doc.sql',1556231700,4908),('phabricator:20170907.ferret.20.project.field.sql',1556231700,5022),('phabricator:20170907.ferret.21.project.ngrams.sql',1556231700,4594),('phabricator:20170907.ferret.22.phriction.doc.sql',1556231700,4889),('phabricator:20170907.ferret.23.phriction.field.sql',1556231700,4387),('phabricator:20170907.ferret.24.phriction.ngrams.sql',1556231700,4437),('phabricator:20170907.ferret.25.event.doc.sql',1556231700,5550),('phabricator:20170907.ferret.26.event.field.sql',1556231700,4987),('phabricator:20170907.ferret.27.event.ngrams.sql',1556231700,4139),('phabricator:20170907.ferret.28.mock.doc.sql',1556231700,5204),('phabricator:20170907.ferret.29.mock.field.sql',1556231700,4481),('phabricator:20170907.ferret.30.mock.ngrams.sql',1556231700,4263),('phabricator:20170907.ferret.31.repo.doc.sql',1556231700,4498),('phabricator:20170907.ferret.32.repo.field.sql',1556231700,5632),('phabricator:20170907.ferret.33.repo.ngrams.sql',1556231700,4712),('phabricator:20170907.ferret.34.commit.doc.sql',1556231700,5410),('phabricator:20170907.ferret.35.commit.field.sql',1556231700,4832),('phabricator:20170907.ferret.36.commit.ngrams.sql',1556231700,4997),('phabricator:20170912.ferret.01.activity.php',1556231700,358),('phabricator:20170914.ref.01.position.sql',1556231700,4702),('phabricator:20170915.ref.01.migrate.php',1556231700,735),('phabricator:20170915.ref.02.drop.id.sql',1556231700,11053),('phabricator:20170915.ref.03.drop.closed.sql',1556231700,10493),('phabricator:20170915.ref.04.uniq.sql',1556231700,6301),('phabricator:20170918.ref.01.position.php',1556231700,6814),('phabricator:20171002.cngram.01.maniphest.sql',1556231700,6208),('phabricator:20171002.cngram.02.event.sql',1556231700,6453),('phabricator:20171002.cngram.03.revision.sql',1556231700,5686),('phabricator:20171002.cngram.05.owners.sql',1556231700,5625),('phabricator:20171002.cngram.06.passphrase.sql',1556231700,6665),('phabricator:20171002.cngram.07.blog.sql',1556231700,5687),('phabricator:20171002.cngram.08.post.sql',1556231700,5555),('phabricator:20171002.cngram.09.pholio.sql',1556231700,5669),('phabricator:20171002.cngram.10.phriction.sql',1556231700,5644),('phabricator:20171002.cngram.11.project.sql',1556231700,5239),('phabricator:20171002.cngram.12.user.sql',1556231700,6475),('phabricator:20171002.cngram.13.repository.sql',1556231700,5340),('phabricator:20171002.cngram.14.commit.sql',1556231700,5519),('phabricator:20171026.ferret.01.ponder.doc.sql',1556231700,4734),('phabricator:20171026.ferret.02.ponder.field.sql',1556231700,4312),('phabricator:20171026.ferret.03.ponder.ngrams.sql',1556231700,4486),('phabricator:20171026.ferret.04.ponder.cngrams.sql',1556231700,6303),('phabricator:20171026.ferret.05.ponder.index.php',1556231700,111),('phabricator:20171101.diff.01.active.sql',1556231700,13157),('phabricator:20171101.diff.02.populate.php',1556231700,466),('phabricator:20180119.bulk.01.silent.sql',1556231700,12179),('phabricator:20180120.auth.01.password.sql',1556231700,5465),('phabricator:20180120.auth.02.passwordxaction.sql',1556231700,7117),('phabricator:20180120.auth.03.vcsdata.sql',1556231700,1196),('phabricator:20180120.auth.04.vcsphid.php',1556231700,751),('phabricator:20180121.auth.01.vcsnuke.sql',1556231700,3980),('phabricator:20180121.auth.02.passsalt.sql',1556231700,9066),('phabricator:20180121.auth.03.accountdata.sql',1556231700,607),('phabricator:20180121.auth.04.accountphid.php',1556231700,431),('phabricator:20180121.auth.05.accountnuke.sql',1556231700,29120),('phabricator:20180121.auth.06.legacydigest.sql',1556231700,9699),('phabricator:20180121.auth.07.marklegacy.sql',1556231700,567),('phabricator:20180124.herald.01.repetition.sql',1556231700,17664),('phabricator:20180207.mail.01.task.sql',1556231700,18090),('phabricator:20180207.mail.02.revision.sql',1556231700,13051),('phabricator:20180207.mail.03.mock.sql',1556231700,11482),('phabricator:20180208.maniphest.01.close.sql',1556231700,34873),('phabricator:20180208.maniphest.02.populate.php',1556231700,494),('phabricator:20180209.hook.01.hook.sql',1556231700,5084),('phabricator:20180209.hook.02.hookxaction.sql',1556231700,6844),('phabricator:20180209.hook.03.hookrequest.sql',1556231700,4822),('phabricator:20180210.hunk.01.droplegacy.sql',1556231700,4058),('phabricator:20180210.hunk.02.renamemodern.sql',1556231700,4436),('phabricator:20180212.harbor.01.receiver.sql',1556231700,14179),('phabricator:20180214.harbor.01.aborted.php',1556231700,902),('phabricator:20180215.phriction.01.phidcol.sql',1556231701,12098),('phabricator:20180215.phriction.02.phidvalues.php',1556231701,643),('phabricator:20180215.phriction.03.descempty.sql',1556231701,535),('phabricator:20180215.phriction.04.descnull.sql',1556231701,14930),('phabricator:20180215.phriction.05.statustext.sql',1556231701,15691),('phabricator:20180215.phriction.06.statusvalue.sql',1556231701,904),('phabricator:20180218.fact.01.dim.key.sql',1556231701,5182),('phabricator:20180218.fact.02.dim.obj.sql',1556231701,4795),('phabricator:20180218.fact.03.data.int.sql',1556231701,4788),('phabricator:20180222.log.01.filephid.sql',1556231701,12884),('phabricator:20180223.log.01.bytelength.sql',1556231701,11783),('phabricator:20180223.log.02.chunkformat.sql',1556231701,10735),('phabricator:20180223.log.03.chunkdefault.sql',1556231701,508),('phabricator:20180223.log.04.linemap.sql',1556231701,12025),('phabricator:20180223.log.05.linemapdefault.sql',1556231701,597),('phabricator:20180228.log.01.offset.sql',1556231701,20084),('phabricator:20180305.lock.01.locklog.sql',1556231701,4480),('phabricator:20180306.opath.01.digest.sql',1556231701,11285),('phabricator:20180306.opath.02.digestpopulate.php',1556231701,636),('phabricator:20180306.opath.03.purge.php',1556231701,422),('phabricator:20180306.opath.04.unique.sql',1556231701,6155),('phabricator:20180306.opath.05.longpath.sql',1556231701,12989),('phabricator:20180306.opath.06.pathdisplay.sql',1556231701,10854),('phabricator:20180306.opath.07.copypaths.sql',1556231701,667),('phabricator:20180309.owners.01.primaryowner.sql',1556231701,12220),('phabricator:20180312.reviewers.01.options.sql',1556231701,10529),('phabricator:20180312.reviewers.02.optionsdefault.sql',1556231701,514),('phabricator:20180322.lock.01.identifier.sql',1556231701,18925),('phabricator:20180322.lock.02.wait.sql',1556231701,35843),('phabricator:20180326.lock.03.nonunique.sql',1556231701,5998),('phabricator:20180403.draft.01.broadcast.php',1556231701,689),('phabricator:20180410.almanac.01.iface.xaction.sql',1556231701,6457),('phabricator:20180418.alamanc.interface.unique.php',1556231701,8603),('phabricator:20180418.almanac.network.unique.php',1556231701,6736),('phabricator:20180419.phlux.edges.sql',1556231701,10016),('phabricator:20180423.mail.01.properties.sql',1556231701,5352),('phabricator:20180430.repo_identity.sql',1556231701,6953),('phabricator:20180504.owners.01.mailkey.php',1556231701,613),('phabricator:20180504.owners.02.rmkey.sql',1556231701,10972),('phabricator:20180504.owners.03.properties.sql',1556231701,11898),('phabricator:20180504.owners.04.default.sql',1556231701,626),('phabricator:20180504.repo_identity.author.sql',1556231701,11039),('phabricator:20180504.repo_identity.xaction.sql',1556231701,7323),('phabricator:20180509.repo_identity.commits.sql',1556231701,13684),('phabricator:20180730.phriction.01.spaces.sql',1556231701,12193),('phabricator:20180730.project.01.spaces.sql',1556231701,16504),('phabricator:20180809.repo_identities.activity.php',1556231701,412),('phabricator:20180827.drydock.01.acquired.sql',1556231701,11934),('phabricator:20180827.drydock.02.activated.sql',1556231701,10516),('phabricator:20180828.phriction.01.contentphid.sql',1556231701,12373),('phabricator:20180828.phriction.02.documentphid.sql',1556231701,12991),('phabricator:20180828.phriction.03.editedepoch.sql',1556231701,12601),('phabricator:20180828.phriction.04.migrate.php',1556231701,612),('phabricator:20180828.phriction.05.contentid.sql',1556231701,11315),('phabricator:20180828.phriction.06.c.documentid.php',1556231701,4931),('phabricator:20180828.phriction.06.documentid.sql',1556231701,12630),('phabricator:20180828.phriction.07.c.documentuniq.sql',1556231701,539),('phabricator:20180828.phriction.07.documentkey.sql',1556231701,6810),('phabricator:20180829.phriction.01.mailkey.php',1556231701,454),('phabricator:20180829.phriction.02.rmkey.sql',1556231701,12074),('phabricator:20180830.phriction.01.maxversion.sql',1556231701,12437),('phabricator:20180830.phriction.02.maxes.php',1556231701,429),('phabricator:20180910.audit.01.searches.php',1556231701,358),('phabricator:20180910.audit.02.string.sql',1556231701,27220),('phabricator:20180910.audit.03.status.php',1556231701,1070),('phabricator:20180910.audit.04.xactions.php',1556231701,1835),('phabricator:20180914.audit.01.mailkey.php',1556231701,501),('phabricator:20180914.audit.02.rmkey.sql',1556231701,15907),('phabricator:20180914.drydock.01.operationphid.sql',1556231701,11675),('phabricator:20181024.drydock.01.commandprops.sql',1556231701,10537),('phabricator:20181024.drydock.02.commanddefaults.sql',1556231701,562),('phabricator:20181031.board.01.queryreset.php',1556231701,2252),('phabricator:20181106.repo.01.sync.sql',1556231701,5414),('phabricator:20181106.repo.02.hook.sql',1556231701,10859),('phabricator:20181213.auth.01.sessionphid.sql',1556231701,11625),('phabricator:20181213.auth.02.populatephid.php',1556231701,418),('phabricator:20181213.auth.03.phidkey.sql',1556231701,8125),('phabricator:20181213.auth.04.longerhashes.sql',1556231701,15735),('phabricator:20181213.auth.05.longerloghashes.sql',1556231701,17050),('phabricator:20181213.auth.06.challenge.sql',1556231701,5795),('phabricator:20181214.auth.01.workflowkey.sql',1556231701,9956),('phabricator:20181217.auth.01.digest.sql',1556231701,10408),('phabricator:20181217.auth.02.ttl.sql',1556231701,10154),('phabricator:20181217.auth.03.completed.sql',1556231701,10782),('phabricator:20181218.pholio.01.imageauthor.sql',1556231701,11427),('phabricator:20181219.pholio.01.imagephid.sql',1556231701,11379),('phabricator:20181219.pholio.02.imagemigrate.php',1556231701,707),('phabricator:20181219.pholio.03.imageid.sql',1556231701,11959),('phabricator:20181220.pholio.01.mailkey.php',1556231701,444),('phabricator:20181220.pholio.02.dropmailkey.sql',1556231701,11687),('phabricator:20181228.auth.01.provider.sql',1556231701,4634),('phabricator:20181228.auth.02.xaction.sql',1556231701,6313),('phabricator:20181228.auth.03.name.sql',1556231701,10666),('phabricator:20190101.sms.01.drop.sql',1556231701,4467),('phabricator:20190115.mfa.01.provider.sql',1556231701,11158),('phabricator:20190115.mfa.02.migrate.php',1556231701,974),('phabricator:20190115.mfa.03.factorkey.sql',1556231701,10875),('phabricator:20190116.contact.01.number.sql',1556231701,5635),('phabricator:20190116.contact.02.xaction.sql',1556231701,6947),('phabricator:20190117.authmessage.01.message.sql',1556231701,4988),('phabricator:20190117.authmessage.02.xaction.sql',1556231701,6637),('phabricator:20190121.contact.01.primary.sql',1556231701,11548),('phabricator:20190127.project.01.subtype.sql',1556231701,17416),('phabricator:20190127.project.02.default.sql',1556231701,555),('phabricator:20190129.project.01.spaces.php',1556231701,406),('phabricator:20190206.external.01.legalpad.sql',1556231701,485),('phabricator:20190206.external.02.email.sql',1556231701,524),('phabricator:20190206.external.03.providerphid.sql',1556231701,13239),('phabricator:20190206.external.04.providerlink.php',1556231701,698),('phabricator:20190207.packages.01.state.sql',1556231702,10942),('phabricator:20190207.packages.02.migrate.sql',1556231702,565),('phabricator:20190207.packages.03.drop.sql',1556231702,11126),('phabricator:20190207.packages.04.xactions.php',1556231702,1229),('phabricator:20190215.daemons.01.dropdataid.php',1556231702,5352),('phabricator:20190215.daemons.02.nulldataid.sql',1556231702,13353),('phabricator:20190215.harbor.01.stringindex.sql',1556231702,5418),('phabricator:20190215.harbor.02.stringcol.sql',1556231702,10942),('phabricator:20190220.daemon_worker.completed.01.sql',1556231702,12323),('phabricator:20190220.daemon_worker.completed.02.sql',1556231702,12844),('phabricator:20190226.harbor.01.planprops.sql',1556231702,10963),('phabricator:20190226.harbor.02.planvalue.sql',1556231702,644),('phabricator:20190307.herald.01.comments.sql',1556231702,4292),('phabricator:20190312.triggers.01.trigger.sql',1556231702,5749),('phabricator:20190312.triggers.02.xaction.sql',1556231702,7189),('phabricator:20190312.triggers.03.triggerphid.sql',1556231702,12671),('phabricator:20190322.triggers.01.usage.sql',1556231702,5436),('phabricator:20190329.portals.01.create.sql',1556231702,4633),('phabricator:20190329.portals.02.xaction.sql',1556231702,8280),('phabricator:20190410.portals.01.ferret.doc.sql',1556231702,5198),('phabricator:20190410.portals.02.ferret.field.sql',1556231702,4797),('phabricator:20190410.portals.03.ferret.ngrams.sql',1556231702,4275),('phabricator:20190410.portals.04.ferret.cngrams.sql',1556231702,5990),('phabricator:20190412.dashboard.01.panels.php',1556231702,453),('phabricator:20190412.dashboard.02.install.sql',1556231702,3768),('phabricator:20190412.dashboard.03.dashngrams.sql',1556231702,4706),('phabricator:20190412.dashboard.04.panelngrams.sql',1556231702,4492),('phabricator:20190412.dashboard.05.dferret.doc.sql',1556231702,4528),('phabricator:20190412.dashboard.06.dferret.field.sql',1556231702,5105),('phabricator:20190412.dashboard.07.dferret.ngrams.sql',1556231702,4069),('phabricator:20190412.dashboard.08.dferret.cngrams.sql',1556231702,5099),('phabricator:20190412.dashboard.09.pferret.doc.sql',1556231702,4827),('phabricator:20190412.dashboard.10.pferret.field.sql',1556231702,5374),('phabricator:20190412.dashboard.11.pferret.ngrams.sql',1556231702,5073),('phabricator:20190412.dashboard.12.pferret.cngrams.sql',1556231702,5528),('phabricator:20190412.dashboard.13.rebuild.php',1556231702,7019),('phabricator:20190412.herald.01.rebuild.php',1556231702,1878),('phabricator:20190416.chart.01.storage.sql',1556231702,4935),('phabricator:daemonstatus.sql',1556231688,NULL),('phabricator:daemonstatuskey.sql',1556231689,NULL),('phabricator:daemontaskarchive.sql',1556231689,NULL),('phabricator:db.almanac',1556231684,NULL),('phabricator:db.application',1556231684,NULL),('phabricator:db.audit',1556231684,NULL),('phabricator:db.auth',1556231684,NULL),('phabricator:db.badges',1556231684,NULL),('phabricator:db.cache',1556231684,NULL),('phabricator:db.calendar',1556231684,NULL),('phabricator:db.chatlog',1556231684,NULL),('phabricator:db.conduit',1556231684,NULL),('phabricator:db.config',1556231684,NULL),('phabricator:db.conpherence',1556231684,NULL),('phabricator:db.countdown',1556231684,NULL),('phabricator:db.daemon',1556231684,NULL),('phabricator:db.dashboard',1556231684,NULL),('phabricator:db.differential',1556231684,NULL),('phabricator:db.diviner',1556231684,NULL),('phabricator:db.doorkeeper',1556231684,NULL),('phabricator:db.draft',1556231684,NULL),('phabricator:db.drydock',1556231684,NULL),('phabricator:db.fact',1556231684,NULL),('phabricator:db.feed',1556231684,NULL),('phabricator:db.file',1556231684,NULL),('phabricator:db.flag',1556231684,NULL),('phabricator:db.harbormaster',1556231684,NULL),('phabricator:db.herald',1556231684,NULL),('phabricator:db.legalpad',1556231684,NULL),('phabricator:db.maniphest',1556231684,NULL),('phabricator:db.meta_data',1556231684,NULL),('phabricator:db.metamta',1556231684,NULL),('phabricator:db.multimeter',1556231684,NULL),('phabricator:db.nuance',1556231684,NULL),('phabricator:db.oauth_server',1556231684,NULL),('phabricator:db.owners',1556231684,NULL),('phabricator:db.packages',1556231684,NULL),('phabricator:db.passphrase',1556231684,NULL),('phabricator:db.pastebin',1556231684,NULL),('phabricator:db.phame',1556231684,NULL),('phabricator:db.phlux',1556231684,NULL),('phabricator:db.pholio',1556231684,NULL),('phabricator:db.phragment',1556231684,NULL),('phabricator:db.phrequent',1556231684,NULL),('phabricator:db.phriction',1556231684,NULL),('phabricator:db.phurl',1556231684,NULL),('phabricator:db.policy',1556231684,NULL),('phabricator:db.ponder',1556231684,NULL),('phabricator:db.project',1556231684,NULL),('phabricator:db.releeph',1556231684,NULL),('phabricator:db.repository',1556231684,NULL),('phabricator:db.search',1556231684,NULL),('phabricator:db.slowvote',1556231684,NULL),('phabricator:db.spaces',1556231684,NULL),('phabricator:db.system',1556231684,NULL),('phabricator:db.timeline',1556231684,NULL),('phabricator:db.token',1556231684,NULL),('phabricator:db.user',1556231684,NULL),('phabricator:db.worker',1556231684,NULL),('phabricator:db.xhpast',1556231684,NULL),('phabricator:db.xhpastview',1556231684,NULL),('phabricator:db.xhprof',1556231684,NULL),('phabricator:differentialbookmarks.sql',1556231688,NULL),('phabricator:draft-metadata.sql',1556231689,NULL),('phabricator:dropfileproxyimage.sql',1556231689,NULL),('phabricator:drydockresoucetype.sql',1556231689,NULL),('phabricator:drydocktaskid.sql',1556231689,NULL),('phabricator:edgetype.sql',1556231689,NULL),('phabricator:emailtable.sql',1556231688,NULL),('phabricator:emailtableport.sql',1556231688,NULL),('phabricator:emailtableremove.sql',1556231688,NULL),('phabricator:fact-raw.sql',1556231688,NULL),('phabricator:harbormasterobject.sql',1556231688,NULL),('phabricator:holidays.sql',1556231688,NULL),('phabricator:ldapinfo.sql',1556231688,NULL),('phabricator:legalpad-mailkey-populate.php',1556231690,NULL),('phabricator:legalpad-mailkey.sql',1556231690,NULL),('phabricator:liskcounters-task.sql',1556231689,NULL),('phabricator:liskcounters.php',1556231689,NULL),('phabricator:liskcounters.sql',1556231689,NULL),('phabricator:maniphestxcache.sql',1556231688,NULL),('phabricator:markupcache.sql',1556231688,NULL),('phabricator:migrate-differential-dependencies.php',1556231688,NULL),('phabricator:migrate-maniphest-dependencies.php',1556231688,NULL),('phabricator:migrate-maniphest-revisions.php',1556231688,NULL),('phabricator:migrate-project-edges.php',1556231688,NULL),('phabricator:owners-exclude.sql',1556231689,NULL),('phabricator:pastepolicy.sql',1556231689,NULL),('phabricator:phameblog.sql',1556231688,NULL),('phabricator:phamedomain.sql',1556231689,NULL),('phabricator:phameoneblog.sql',1556231689,NULL),('phabricator:phamepolicy.sql',1556231689,NULL),('phabricator:phiddrop.sql',1556231688,NULL),('phabricator:pholio.sql',1556231689,NULL),('phabricator:policy-project.sql',1556231689,NULL),('phabricator:ponder-comments.sql',1556231689,NULL),('phabricator:ponder-mailkey-populate.php',1556231689,NULL),('phabricator:ponder-mailkey.sql',1556231689,NULL),('phabricator:ponder.sql',1556231688,NULL),('phabricator:releeph.sql',1556231689,NULL),('phabricator:repository-lint.sql',1556231689,NULL),('phabricator:statustxt.sql',1556231689,NULL),('phabricator:symbolcontexts.sql',1556231688,NULL),('phabricator:testdatabase.sql',1556231688,NULL),('phabricator:threadtopic.sql',1556231688,NULL),('phabricator:userstatus.sql',1556231688,NULL),('phabricator:usertranslation.sql',1556231688,NULL),('phabricator:xhprof.sql',1556231689,NULL); CREATE DATABASE /*!32312 IF NOT EXISTS*/ `{$NAMESPACE}_metamta` /*!40100 DEFAULT CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} */; @@ -7153,366 +6925,6 @@ UNIQUE KEY `key_draft` (`authorPHID`,`imageID`,`transactionPHID`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `{$NAMESPACE}_phortune` /*!40100 DEFAULT CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} */; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `edge` ( - `src` varbinary(64) NOT NULL, - `type` int(10) unsigned NOT NULL, - `dst` varbinary(64) NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `seq` int(10) unsigned NOT NULL, - `dataID` int(10) unsigned DEFAULT NULL, - PRIMARY KEY (`src`,`type`,`dst`), - UNIQUE KEY `key_dst` (`dst`,`type`,`src`), - KEY `src` (`src`,`type`,`dateCreated`,`seq`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `edgedata` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `data` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_account` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `name` varchar(255) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - `billingName` varchar(255) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `billingAddress` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_accounttransaction` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `objectPHID` varbinary(64) NOT NULL, - `viewPolicy` varbinary(64) NOT NULL, - `editPolicy` varbinary(64) NOT NULL, - `commentPHID` varbinary(64) DEFAULT NULL, - `commentVersion` int(10) unsigned NOT NULL, - `transactionType` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `oldValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `newValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `contentSource` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_cart` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `accountPHID` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - `status` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `cartClass` varchar(128) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `merchantPHID` varbinary(64) NOT NULL, - `mailKey` binary(20) NOT NULL, - `subscriptionPHID` varbinary(64) DEFAULT NULL, - `isInvoice` tinyint(1) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_account` (`accountPHID`), - KEY `key_merchant` (`merchantPHID`), - KEY `key_subscription` (`subscriptionPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_carttransaction` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `objectPHID` varbinary(64) NOT NULL, - `viewPolicy` varbinary(64) NOT NULL, - `editPolicy` varbinary(64) NOT NULL, - `commentPHID` varbinary(64) DEFAULT NULL, - `commentVersion` int(10) unsigned NOT NULL, - `transactionType` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `oldValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `newValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `contentSource` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_charge` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `accountPHID` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `cartPHID` varbinary(64) NOT NULL, - `paymentMethodPHID` varbinary(64) DEFAULT NULL, - `amountAsCurrency` varchar(64) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `status` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - `merchantPHID` varbinary(64) NOT NULL, - `providerPHID` varbinary(64) NOT NULL, - `amountRefundedAsCurrency` varchar(64) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `refundingPHID` varbinary(64) DEFAULT NULL, - `refundedChargePHID` varbinary(64) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_cart` (`cartPHID`), - KEY `key_account` (`accountPHID`), - KEY `key_merchant` (`merchantPHID`), - KEY `key_provider` (`providerPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_merchant` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `name` varchar(255) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `viewPolicy` varbinary(64) NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - `description` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `contactInfo` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `profileImagePHID` varbinary(64) DEFAULT NULL, - `invoiceEmail` varchar(255) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `invoiceFooter` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_merchanttransaction` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `objectPHID` varbinary(64) NOT NULL, - `viewPolicy` varbinary(64) NOT NULL, - `editPolicy` varbinary(64) NOT NULL, - `commentPHID` varbinary(64) DEFAULT NULL, - `commentVersion` int(10) unsigned NOT NULL, - `transactionType` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `oldValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `newValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `contentSource` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_paymentmethod` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `name` varchar(255) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `status` varchar(64) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `accountPHID` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - `brand` varchar(64) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `expires` varchar(16) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `lastFourDigits` varchar(16) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `merchantPHID` varbinary(64) NOT NULL, - `providerPHID` varbinary(64) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_account` (`accountPHID`,`status`), - KEY `key_merchant` (`merchantPHID`,`accountPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_paymentproviderconfig` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `merchantPHID` varbinary(64) NOT NULL, - `providerClassKey` binary(12) NOT NULL, - `providerClass` varchar(128) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - `isEnabled` tinyint(1) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - UNIQUE KEY `key_merchant` (`merchantPHID`,`providerClassKey`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_paymentproviderconfigtransaction` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `objectPHID` varbinary(64) NOT NULL, - `viewPolicy` varbinary(64) NOT NULL, - `editPolicy` varbinary(64) NOT NULL, - `commentPHID` varbinary(64) DEFAULT NULL, - `commentVersion` int(10) unsigned NOT NULL, - `transactionType` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `oldValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `newValue` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `contentSource` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_object` (`objectPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_product` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - `productClassKey` binary(12) NOT NULL, - `productClass` varchar(128) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `productRefKey` binary(12) NOT NULL, - `productRef` varchar(128) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - UNIQUE KEY `key_product` (`productClassKey`,`productRefKey`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_purchase` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `productPHID` varbinary(64) NOT NULL, - `accountPHID` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `cartPHID` varbinary(64) DEFAULT NULL, - `basePriceAsCurrency` varchar(64) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `quantity` int(10) unsigned NOT NULL, - `status` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - KEY `key_cart` (`cartPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - -USE `{$NAMESPACE}_phortune`; - - SET NAMES utf8 ; - - SET character_set_client = {$CHARSET} ; - -CREATE TABLE `phortune_subscription` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `phid` varbinary(64) NOT NULL, - `accountPHID` varbinary(64) NOT NULL, - `merchantPHID` varbinary(64) NOT NULL, - `triggerPHID` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `subscriptionClassKey` binary(12) NOT NULL, - `subscriptionClass` varchar(128) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `subscriptionRefKey` binary(12) NOT NULL, - `subscriptionRef` varchar(128) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `status` varchar(32) CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `metadata` longtext CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - `defaultPaymentMethodPHID` varbinary(64) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_phid` (`phid`), - UNIQUE KEY `key_subscription` (`subscriptionClassKey`,`subscriptionRefKey`), - KEY `key_account` (`accountPHID`), - KEY `key_merchant` (`merchantPHID`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - CREATE DATABASE /*!32312 IF NOT EXISTS*/ `{$NAMESPACE}_phrequent` /*!40100 DEFAULT CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} */; USE `{$NAMESPACE}_phrequent`; diff --git a/scripts/setup/manage_phortune.php b/scripts/setup/manage_phortune.php deleted file mode 100755 --- a/scripts/setup/manage_phortune.php +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env php -setTagline(pht('manage billing')); -$args->setSynopsis(<<parseStandardArguments(); - -$workflows = id(new PhutilClassMapQuery()) - ->setAncestorClass('PhabricatorPhortuneManagementWorkflow') - ->execute(); -$workflows[] = new PhutilHelpArgumentWorkflow(); -$args->parseWorkflows($workflows); diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1333,50 +1333,6 @@ 'FuelMenuItemView' => 'view/fuel/FuelMenuItemView.php', 'FuelMenuView' => 'view/fuel/FuelMenuView.php', 'FuelView' => 'view/fuel/FuelView.php', - 'FundBacker' => 'applications/fund/storage/FundBacker.php', - 'FundBackerCart' => 'applications/fund/phortune/FundBackerCart.php', - 'FundBackerEditor' => 'applications/fund/editor/FundBackerEditor.php', - 'FundBackerListController' => 'applications/fund/controller/FundBackerListController.php', - 'FundBackerPHIDType' => 'applications/fund/phid/FundBackerPHIDType.php', - 'FundBackerProduct' => 'applications/fund/phortune/FundBackerProduct.php', - 'FundBackerQuery' => 'applications/fund/query/FundBackerQuery.php', - 'FundBackerRefundTransaction' => 'applications/fund/xaction/FundBackerRefundTransaction.php', - 'FundBackerSearchEngine' => 'applications/fund/query/FundBackerSearchEngine.php', - 'FundBackerStatusTransaction' => 'applications/fund/xaction/FundBackerStatusTransaction.php', - 'FundBackerTransaction' => 'applications/fund/storage/FundBackerTransaction.php', - 'FundBackerTransactionQuery' => 'applications/fund/query/FundBackerTransactionQuery.php', - 'FundBackerTransactionType' => 'applications/fund/xaction/FundBackerTransactionType.php', - 'FundController' => 'applications/fund/controller/FundController.php', - 'FundCreateInitiativesCapability' => 'applications/fund/capability/FundCreateInitiativesCapability.php', - 'FundDAO' => 'applications/fund/storage/FundDAO.php', - 'FundDefaultViewCapability' => 'applications/fund/capability/FundDefaultViewCapability.php', - 'FundInitiative' => 'applications/fund/storage/FundInitiative.php', - 'FundInitiativeBackController' => 'applications/fund/controller/FundInitiativeBackController.php', - 'FundInitiativeBackerTransaction' => 'applications/fund/xaction/FundInitiativeBackerTransaction.php', - 'FundInitiativeCloseController' => 'applications/fund/controller/FundInitiativeCloseController.php', - 'FundInitiativeDescriptionTransaction' => 'applications/fund/xaction/FundInitiativeDescriptionTransaction.php', - 'FundInitiativeEditController' => 'applications/fund/controller/FundInitiativeEditController.php', - 'FundInitiativeEditEngine' => 'applications/fund/editor/FundInitiativeEditEngine.php', - 'FundInitiativeEditor' => 'applications/fund/editor/FundInitiativeEditor.php', - 'FundInitiativeFerretEngine' => 'applications/fund/search/FundInitiativeFerretEngine.php', - 'FundInitiativeFulltextEngine' => 'applications/fund/search/FundInitiativeFulltextEngine.php', - 'FundInitiativeListController' => 'applications/fund/controller/FundInitiativeListController.php', - 'FundInitiativeMerchantTransaction' => 'applications/fund/xaction/FundInitiativeMerchantTransaction.php', - 'FundInitiativeNameTransaction' => 'applications/fund/xaction/FundInitiativeNameTransaction.php', - 'FundInitiativePHIDType' => 'applications/fund/phid/FundInitiativePHIDType.php', - 'FundInitiativeQuery' => 'applications/fund/query/FundInitiativeQuery.php', - 'FundInitiativeRefundTransaction' => 'applications/fund/xaction/FundInitiativeRefundTransaction.php', - 'FundInitiativeRemarkupRule' => 'applications/fund/remarkup/FundInitiativeRemarkupRule.php', - 'FundInitiativeReplyHandler' => 'applications/fund/mail/FundInitiativeReplyHandler.php', - 'FundInitiativeRisksTransaction' => 'applications/fund/xaction/FundInitiativeRisksTransaction.php', - 'FundInitiativeSearchEngine' => 'applications/fund/query/FundInitiativeSearchEngine.php', - 'FundInitiativeStatusTransaction' => 'applications/fund/xaction/FundInitiativeStatusTransaction.php', - 'FundInitiativeTransaction' => 'applications/fund/storage/FundInitiativeTransaction.php', - 'FundInitiativeTransactionComment' => 'applications/fund/storage/FundInitiativeTransactionComment.php', - 'FundInitiativeTransactionQuery' => 'applications/fund/query/FundInitiativeTransactionQuery.php', - 'FundInitiativeTransactionType' => 'applications/fund/xaction/FundInitiativeTransactionType.php', - 'FundInitiativeViewController' => 'applications/fund/controller/FundInitiativeViewController.php', - 'FundSchemaSpec' => 'applications/fund/storage/FundSchemaSpec.php', 'HarbormasterAbortOlderBuildsBuildStepImplementation' => 'applications/harbormaster/step/HarbormasterAbortOlderBuildsBuildStepImplementation.php', 'HarbormasterArcLintBuildStepImplementation' => 'applications/harbormaster/step/HarbormasterArcLintBuildStepImplementation.php', 'HarbormasterArcUnitBuildStepImplementation' => 'applications/harbormaster/step/HarbormasterArcUnitBuildStepImplementation.php', @@ -3563,7 +3519,6 @@ 'PhabricatorFulltextResultSet' => 'applications/search/query/PhabricatorFulltextResultSet.php', 'PhabricatorFulltextStorageEngine' => 'applications/search/fulltextstorage/PhabricatorFulltextStorageEngine.php', 'PhabricatorFulltextToken' => 'applications/search/query/PhabricatorFulltextToken.php', - 'PhabricatorFundApplication' => 'applications/fund/application/PhabricatorFundApplication.php', 'PhabricatorGDSetupCheck' => 'applications/config/check/PhabricatorGDSetupCheck.php', 'PhabricatorGarbageCollector' => 'infrastructure/daemon/garbagecollector/PhabricatorGarbageCollector.php', 'PhabricatorGarbageCollectorManagementCollectWorkflow' => 'infrastructure/daemon/garbagecollector/management/PhabricatorGarbageCollectorManagementCollectWorkflow.php', @@ -4019,21 +3974,7 @@ 'PhabricatorOwnersPathsSearchEngineAttachment' => 'applications/owners/engineextension/PhabricatorOwnersPathsSearchEngineAttachment.php', 'PhabricatorOwnersSchemaSpec' => 'applications/owners/storage/PhabricatorOwnersSchemaSpec.php', 'PhabricatorOwnersSearchField' => 'applications/owners/searchfield/PhabricatorOwnersSearchField.php', - 'PhabricatorPDFCatalogObject' => 'applications/phortune/pdf/PhabricatorPDFCatalogObject.php', - 'PhabricatorPDFContentsObject' => 'applications/phortune/pdf/PhabricatorPDFContentsObject.php', 'PhabricatorPDFDocumentEngine' => 'applications/files/document/PhabricatorPDFDocumentEngine.php', - 'PhabricatorPDFFontObject' => 'applications/phortune/pdf/PhabricatorPDFFontObject.php', - 'PhabricatorPDFFragment' => 'applications/phortune/pdf/PhabricatorPDFFragment.php', - 'PhabricatorPDFFragmentOffset' => 'applications/phortune/pdf/PhabricatorPDFFragmentOffset.php', - 'PhabricatorPDFGenerator' => 'applications/phortune/pdf/PhabricatorPDFGenerator.php', - 'PhabricatorPDFHeadFragment' => 'applications/phortune/pdf/PhabricatorPDFHeadFragment.php', - 'PhabricatorPDFInfoObject' => 'applications/phortune/pdf/PhabricatorPDFInfoObject.php', - 'PhabricatorPDFIterator' => 'applications/phortune/pdf/PhabricatorPDFIterator.php', - 'PhabricatorPDFObject' => 'applications/phortune/pdf/PhabricatorPDFObject.php', - 'PhabricatorPDFPageObject' => 'applications/phortune/pdf/PhabricatorPDFPageObject.php', - 'PhabricatorPDFPagesObject' => 'applications/phortune/pdf/PhabricatorPDFPagesObject.php', - 'PhabricatorPDFResourcesObject' => 'applications/phortune/pdf/PhabricatorPDFResourcesObject.php', - 'PhabricatorPDFTailFragment' => 'applications/phortune/pdf/PhabricatorPDFTailFragment.php', 'PhabricatorPHDConfigOptions' => 'applications/config/option/PhabricatorPHDConfigOptions.php', 'PhabricatorPHID' => 'applications/phid/storage/PhabricatorPHID.php', 'PhabricatorPHIDConstants' => 'applications/phid/PhabricatorPHIDConstants.php', @@ -4235,11 +4176,6 @@ 'PhabricatorPholioMockTestDataGenerator' => 'applications/pholio/lipsum/PhabricatorPholioMockTestDataGenerator.php', 'PhabricatorPhoneNumber' => 'applications/metamta/message/PhabricatorPhoneNumber.php', 'PhabricatorPhoneNumberTestCase' => 'applications/metamta/message/__tests__/PhabricatorPhoneNumberTestCase.php', - 'PhabricatorPhortuneApplication' => 'applications/phortune/application/PhabricatorPhortuneApplication.php', - 'PhabricatorPhortuneContentSource' => 'applications/phortune/contentsource/PhabricatorPhortuneContentSource.php', - 'PhabricatorPhortuneManagementInvoiceWorkflow' => 'applications/phortune/management/PhabricatorPhortuneManagementInvoiceWorkflow.php', - 'PhabricatorPhortuneManagementWorkflow' => 'applications/phortune/management/PhabricatorPhortuneManagementWorkflow.php', - 'PhabricatorPhortuneTestCase' => 'applications/phortune/__tests__/PhabricatorPhortuneTestCase.php', 'PhabricatorPhrequentApplication' => 'applications/phrequent/application/PhabricatorPhrequentApplication.php', 'PhabricatorPhrictionApplication' => 'applications/phriction/application/PhabricatorPhrictionApplication.php', 'PhabricatorPhurlApplication' => 'applications/phurl/application/PhabricatorPhurlApplication.php', @@ -5389,185 +5325,6 @@ 'PholioUploadedImageView' => 'applications/pholio/view/PholioUploadedImageView.php', 'PhorgeCodeWarningSetupCheck' => 'applications/config/check/PhorgeCodeWarningSetupCheck.php', 'PhorgeSystemDeprecationWarningListener' => 'applications/system/events/PhorgeSystemDeprecationWarningListener.php', - 'PhortuneAccount' => 'applications/phortune/storage/PhortuneAccount.php', - 'PhortuneAccountAddManagerController' => 'applications/phortune/controller/account/PhortuneAccountAddManagerController.php', - 'PhortuneAccountBillingAddressTransaction' => 'applications/phortune/xaction/PhortuneAccountBillingAddressTransaction.php', - 'PhortuneAccountBillingNameTransaction' => 'applications/phortune/xaction/PhortuneAccountBillingNameTransaction.php', - 'PhortuneAccountChargeListController' => 'applications/phortune/controller/account/PhortuneAccountChargeListController.php', - 'PhortuneAccountChargesController' => 'applications/phortune/controller/account/PhortuneAccountChargesController.php', - 'PhortuneAccountController' => 'applications/phortune/controller/account/PhortuneAccountController.php', - 'PhortuneAccountDetailsController' => 'applications/phortune/controller/account/PhortuneAccountDetailsController.php', - 'PhortuneAccountEditController' => 'applications/phortune/controller/account/PhortuneAccountEditController.php', - 'PhortuneAccountEditEngine' => 'applications/phortune/editor/PhortuneAccountEditEngine.php', - 'PhortuneAccountEditor' => 'applications/phortune/editor/PhortuneAccountEditor.php', - 'PhortuneAccountEmail' => 'applications/phortune/storage/PhortuneAccountEmail.php', - 'PhortuneAccountEmailAddressTransaction' => 'applications/phortune/xaction/PhortuneAccountEmailAddressTransaction.php', - 'PhortuneAccountEmailAddressesController' => 'applications/phortune/controller/account/PhortuneAccountEmailAddressesController.php', - 'PhortuneAccountEmailEditController' => 'applications/phortune/controller/account/PhortuneAccountEmailEditController.php', - 'PhortuneAccountEmailEditEngine' => 'applications/phortune/editor/PhortuneAccountEmailEditEngine.php', - 'PhortuneAccountEmailEditor' => 'applications/phortune/editor/PhortuneAccountEmailEditor.php', - 'PhortuneAccountEmailPHIDType' => 'applications/phortune/phid/PhortuneAccountEmailPHIDType.php', - 'PhortuneAccountEmailQuery' => 'applications/phortune/query/PhortuneAccountEmailQuery.php', - 'PhortuneAccountEmailRotateController' => 'applications/phortune/controller/account/PhortuneAccountEmailRotateController.php', - 'PhortuneAccountEmailRotateTransaction' => 'applications/phortune/xaction/PhortuneAccountEmailRotateTransaction.php', - 'PhortuneAccountEmailStatus' => 'applications/phortune/constants/PhortuneAccountEmailStatus.php', - 'PhortuneAccountEmailStatusController' => 'applications/phortune/controller/account/PhortuneAccountEmailStatusController.php', - 'PhortuneAccountEmailStatusTransaction' => 'applications/phortune/xaction/PhortuneAccountEmailStatusTransaction.php', - 'PhortuneAccountEmailTransaction' => 'applications/phortune/storage/PhortuneAccountEmailTransaction.php', - 'PhortuneAccountEmailTransactionQuery' => 'applications/phortune/query/PhortuneAccountEmailTransactionQuery.php', - 'PhortuneAccountEmailTransactionType' => 'applications/phortune/xaction/PhortuneAccountEmailTransactionType.php', - 'PhortuneAccountEmailViewController' => 'applications/phortune/controller/account/PhortuneAccountEmailViewController.php', - 'PhortuneAccountHasMemberEdgeType' => 'applications/phortune/edge/PhortuneAccountHasMemberEdgeType.php', - 'PhortuneAccountHasMerchantEdgeType' => 'applications/phortune/edge/PhortuneAccountHasMerchantEdgeType.php', - 'PhortuneAccountListController' => 'applications/phortune/controller/account/PhortuneAccountListController.php', - 'PhortuneAccountManagersController' => 'applications/phortune/controller/account/PhortuneAccountManagersController.php', - 'PhortuneAccountNameTransaction' => 'applications/phortune/xaction/PhortuneAccountNameTransaction.php', - 'PhortuneAccountOrderListController' => 'applications/phortune/controller/account/PhortuneAccountOrderListController.php', - 'PhortuneAccountOrdersController' => 'applications/phortune/controller/account/PhortuneAccountOrdersController.php', - 'PhortuneAccountOverviewController' => 'applications/phortune/controller/account/PhortuneAccountOverviewController.php', - 'PhortuneAccountPHIDType' => 'applications/phortune/phid/PhortuneAccountPHIDType.php', - 'PhortuneAccountPaymentMethodController' => 'applications/phortune/controller/account/PhortuneAccountPaymentMethodController.php', - 'PhortuneAccountPaymentMethodViewController' => 'applications/phortune/controller/account/PhortuneAccountPaymentMethodViewController.php', - 'PhortuneAccountProfileController' => 'applications/phortune/controller/account/PhortuneAccountProfileController.php', - 'PhortuneAccountQuery' => 'applications/phortune/query/PhortuneAccountQuery.php', - 'PhortuneAccountSubscriptionAutopayController' => 'applications/phortune/controller/account/PhortuneAccountSubscriptionAutopayController.php', - 'PhortuneAccountSubscriptionController' => 'applications/phortune/controller/account/PhortuneAccountSubscriptionController.php', - 'PhortuneAccountSubscriptionViewController' => 'applications/phortune/controller/account/PhortuneAccountSubscriptionViewController.php', - 'PhortuneAccountTransaction' => 'applications/phortune/storage/PhortuneAccountTransaction.php', - 'PhortuneAccountTransactionQuery' => 'applications/phortune/query/PhortuneAccountTransactionQuery.php', - 'PhortuneAccountTransactionType' => 'applications/phortune/xaction/PhortuneAccountTransactionType.php', - 'PhortuneAdHocCart' => 'applications/phortune/cart/PhortuneAdHocCart.php', - 'PhortuneAdHocProduct' => 'applications/phortune/product/PhortuneAdHocProduct.php', - 'PhortuneAddPaymentMethodAction' => 'applications/phortune/action/PhortuneAddPaymentMethodAction.php', - 'PhortuneCart' => 'applications/phortune/storage/PhortuneCart.php', - 'PhortuneCartAcceptController' => 'applications/phortune/controller/cart/PhortuneCartAcceptController.php', - 'PhortuneCartCancelController' => 'applications/phortune/controller/cart/PhortuneCartCancelController.php', - 'PhortuneCartCheckoutController' => 'applications/phortune/controller/cart/PhortuneCartCheckoutController.php', - 'PhortuneCartController' => 'applications/phortune/controller/cart/PhortuneCartController.php', - 'PhortuneCartEditor' => 'applications/phortune/editor/PhortuneCartEditor.php', - 'PhortuneCartImplementation' => 'applications/phortune/cart/PhortuneCartImplementation.php', - 'PhortuneCartPHIDType' => 'applications/phortune/phid/PhortuneCartPHIDType.php', - 'PhortuneCartQuery' => 'applications/phortune/query/PhortuneCartQuery.php', - 'PhortuneCartReplyHandler' => 'applications/phortune/mail/PhortuneCartReplyHandler.php', - 'PhortuneCartSearchEngine' => 'applications/phortune/query/PhortuneCartSearchEngine.php', - 'PhortuneCartTransaction' => 'applications/phortune/storage/PhortuneCartTransaction.php', - 'PhortuneCartTransactionQuery' => 'applications/phortune/query/PhortuneCartTransactionQuery.php', - 'PhortuneCartUpdateController' => 'applications/phortune/controller/cart/PhortuneCartUpdateController.php', - 'PhortuneCartViewController' => 'applications/phortune/controller/cart/PhortuneCartViewController.php', - 'PhortuneCartVoidController' => 'applications/phortune/controller/cart/PhortuneCartVoidController.php', - 'PhortuneCharge' => 'applications/phortune/storage/PhortuneCharge.php', - 'PhortuneChargePHIDType' => 'applications/phortune/phid/PhortuneChargePHIDType.php', - 'PhortuneChargeQuery' => 'applications/phortune/query/PhortuneChargeQuery.php', - 'PhortuneChargeSearchEngine' => 'applications/phortune/query/PhortuneChargeSearchEngine.php', - 'PhortuneChargeTableView' => 'applications/phortune/view/PhortuneChargeTableView.php', - 'PhortuneConstants' => 'applications/phortune/constants/PhortuneConstants.php', - 'PhortuneController' => 'applications/phortune/controller/PhortuneController.php', - 'PhortuneCreditCardForm' => 'applications/phortune/view/PhortuneCreditCardForm.php', - 'PhortuneCurrency' => 'applications/phortune/currency/PhortuneCurrency.php', - 'PhortuneCurrencySerializer' => 'applications/phortune/currency/PhortuneCurrencySerializer.php', - 'PhortuneCurrencyTestCase' => 'applications/phortune/currency/__tests__/PhortuneCurrencyTestCase.php', - 'PhortuneDAO' => 'applications/phortune/storage/PhortuneDAO.php', - 'PhortuneDisplayException' => 'applications/phortune/exception/PhortuneDisplayException.php', - 'PhortuneErrCode' => 'applications/phortune/constants/PhortuneErrCode.php', - 'PhortuneExternalController' => 'applications/phortune/controller/external/PhortuneExternalController.php', - 'PhortuneExternalOrderController' => 'applications/phortune/controller/external/PhortuneExternalOrderController.php', - 'PhortuneExternalOverviewController' => 'applications/phortune/controller/external/PhortuneExternalOverviewController.php', - 'PhortuneExternalUnsubscribeController' => 'applications/phortune/controller/external/PhortuneExternalUnsubscribeController.php', - 'PhortuneLandingController' => 'applications/phortune/controller/PhortuneLandingController.php', - 'PhortuneMemberHasAccountEdgeType' => 'applications/phortune/edge/PhortuneMemberHasAccountEdgeType.php', - 'PhortuneMemberHasMerchantEdgeType' => 'applications/phortune/edge/PhortuneMemberHasMerchantEdgeType.php', - 'PhortuneMerchant' => 'applications/phortune/storage/PhortuneMerchant.php', - 'PhortuneMerchantAddManagerController' => 'applications/phortune/controller/merchant/PhortuneMerchantAddManagerController.php', - 'PhortuneMerchantCapability' => 'applications/phortune/capability/PhortuneMerchantCapability.php', - 'PhortuneMerchantContactInfoTransaction' => 'applications/phortune/xaction/PhortuneMerchantContactInfoTransaction.php', - 'PhortuneMerchantController' => 'applications/phortune/controller/merchant/PhortuneMerchantController.php', - 'PhortuneMerchantDescriptionTransaction' => 'applications/phortune/xaction/PhortuneMerchantDescriptionTransaction.php', - 'PhortuneMerchantDetailsController' => 'applications/phortune/controller/merchant/PhortuneMerchantDetailsController.php', - 'PhortuneMerchantEditController' => 'applications/phortune/controller/merchant/PhortuneMerchantEditController.php', - 'PhortuneMerchantEditEngine' => 'applications/phortune/editor/PhortuneMerchantEditEngine.php', - 'PhortuneMerchantEditor' => 'applications/phortune/editor/PhortuneMerchantEditor.php', - 'PhortuneMerchantHasAccountEdgeType' => 'applications/phortune/edge/PhortuneMerchantHasAccountEdgeType.php', - 'PhortuneMerchantHasMemberEdgeType' => 'applications/phortune/edge/PhortuneMerchantHasMemberEdgeType.php', - 'PhortuneMerchantInvoiceCreateController' => 'applications/phortune/controller/merchant/PhortuneMerchantInvoiceCreateController.php', - 'PhortuneMerchantInvoiceEmailTransaction' => 'applications/phortune/xaction/PhortuneMerchantInvoiceEmailTransaction.php', - 'PhortuneMerchantInvoiceFooterTransaction' => 'applications/phortune/xaction/PhortuneMerchantInvoiceFooterTransaction.php', - 'PhortuneMerchantListController' => 'applications/phortune/controller/merchant/PhortuneMerchantListController.php', - 'PhortuneMerchantManagersController' => 'applications/phortune/controller/merchant/PhortuneMerchantManagersController.php', - 'PhortuneMerchantNameTransaction' => 'applications/phortune/xaction/PhortuneMerchantNameTransaction.php', - 'PhortuneMerchantOrderListController' => 'applications/phortune/controller/merchant/PhortuneMerchantOrderListController.php', - 'PhortuneMerchantOrdersController' => 'applications/phortune/controller/merchant/PhortuneMerchantOrdersController.php', - 'PhortuneMerchantOverviewController' => 'applications/phortune/controller/merchant/PhortuneMerchantOverviewController.php', - 'PhortuneMerchantPHIDType' => 'applications/phortune/phid/PhortuneMerchantPHIDType.php', - 'PhortuneMerchantPictureController' => 'applications/phortune/controller/merchant/PhortuneMerchantPictureController.php', - 'PhortuneMerchantPictureTransaction' => 'applications/phortune/xaction/PhortuneMerchantPictureTransaction.php', - 'PhortuneMerchantProfileController' => 'applications/phortune/controller/merchant/PhortuneMerchantProfileController.php', - 'PhortuneMerchantProviderDisableController' => 'applications/phortune/controller/merchant/PhortuneMerchantProviderDisableController.php', - 'PhortuneMerchantProviderEditController' => 'applications/phortune/controller/merchant/PhortuneMerchantProviderEditController.php', - 'PhortuneMerchantProviderViewController' => 'applications/phortune/controller/merchant/PhortuneMerchantProviderViewController.php', - 'PhortuneMerchantProvidersController' => 'applications/phortune/controller/merchant/PhortuneMerchantProvidersController.php', - 'PhortuneMerchantQuery' => 'applications/phortune/query/PhortuneMerchantQuery.php', - 'PhortuneMerchantSearchEngine' => 'applications/phortune/query/PhortuneMerchantSearchEngine.php', - 'PhortuneMerchantSubscriptionListController' => 'applications/phortune/controller/merchant/PhortuneMerchantSubscriptionListController.php', - 'PhortuneMerchantSubscriptionsController' => 'applications/phortune/controller/merchant/PhortuneMerchantSubscriptionsController.php', - 'PhortuneMerchantTransaction' => 'applications/phortune/storage/PhortuneMerchantTransaction.php', - 'PhortuneMerchantTransactionQuery' => 'applications/phortune/query/PhortuneMerchantTransactionQuery.php', - 'PhortuneMerchantTransactionType' => 'applications/phortune/xaction/PhortuneMerchantTransactionType.php', - 'PhortuneMonthYearExpiryControl' => 'applications/phortune/control/PhortuneMonthYearExpiryControl.php', - 'PhortuneOrderDescriptionView' => 'applications/phortune/view/PhortuneOrderDescriptionView.php', - 'PhortuneOrderItemsView' => 'applications/phortune/view/PhortuneOrderItemsView.php', - 'PhortuneOrderSummaryView' => 'applications/phortune/view/PhortuneOrderSummaryView.php', - 'PhortuneOrderTableView' => 'applications/phortune/view/PhortuneOrderTableView.php', - 'PhortuneOrderView' => 'applications/phortune/view/PhortuneOrderView.php', - 'PhortunePayPalPaymentProvider' => 'applications/phortune/provider/PhortunePayPalPaymentProvider.php', - 'PhortunePaymentMethod' => 'applications/phortune/storage/PhortunePaymentMethod.php', - 'PhortunePaymentMethodCreateController' => 'applications/phortune/controller/paymentmethod/PhortunePaymentMethodCreateController.php', - 'PhortunePaymentMethodDisableController' => 'applications/phortune/controller/paymentmethod/PhortunePaymentMethodDisableController.php', - 'PhortunePaymentMethodEditController' => 'applications/phortune/controller/paymentmethod/PhortunePaymentMethodEditController.php', - 'PhortunePaymentMethodEditor' => 'applications/phortune/editor/PhortunePaymentMethodEditor.php', - 'PhortunePaymentMethodNameTransaction' => 'applications/phortune/xaction/paymentmethod/PhortunePaymentMethodNameTransaction.php', - 'PhortunePaymentMethodPHIDType' => 'applications/phortune/phid/PhortunePaymentMethodPHIDType.php', - 'PhortunePaymentMethodPolicyCodex' => 'applications/phortune/codex/PhortunePaymentMethodPolicyCodex.php', - 'PhortunePaymentMethodQuery' => 'applications/phortune/query/PhortunePaymentMethodQuery.php', - 'PhortunePaymentMethodStatusTransaction' => 'applications/phortune/xaction/paymentmethod/PhortunePaymentMethodStatusTransaction.php', - 'PhortunePaymentMethodTransaction' => 'applications/phortune/storage/PhortunePaymentMethodTransaction.php', - 'PhortunePaymentMethodTransactionQuery' => 'applications/phortune/query/PhortunePaymentMethodTransactionQuery.php', - 'PhortunePaymentMethodTransactionType' => 'applications/phortune/xaction/paymentmethod/PhortunePaymentMethodTransactionType.php', - 'PhortunePaymentProvider' => 'applications/phortune/provider/PhortunePaymentProvider.php', - 'PhortunePaymentProviderConfig' => 'applications/phortune/storage/PhortunePaymentProviderConfig.php', - 'PhortunePaymentProviderConfigEditor' => 'applications/phortune/editor/PhortunePaymentProviderConfigEditor.php', - 'PhortunePaymentProviderConfigQuery' => 'applications/phortune/query/PhortunePaymentProviderConfigQuery.php', - 'PhortunePaymentProviderConfigTransaction' => 'applications/phortune/storage/PhortunePaymentProviderConfigTransaction.php', - 'PhortunePaymentProviderConfigTransactionQuery' => 'applications/phortune/query/PhortunePaymentProviderConfigTransactionQuery.php', - 'PhortunePaymentProviderPHIDType' => 'applications/phortune/phid/PhortunePaymentProviderPHIDType.php', - 'PhortunePaymentProviderTestCase' => 'applications/phortune/provider/__tests__/PhortunePaymentProviderTestCase.php', - 'PhortuneProduct' => 'applications/phortune/storage/PhortuneProduct.php', - 'PhortuneProductImplementation' => 'applications/phortune/product/PhortuneProductImplementation.php', - 'PhortuneProductListController' => 'applications/phortune/controller/product/PhortuneProductListController.php', - 'PhortuneProductPHIDType' => 'applications/phortune/phid/PhortuneProductPHIDType.php', - 'PhortuneProductQuery' => 'applications/phortune/query/PhortuneProductQuery.php', - 'PhortuneProductViewController' => 'applications/phortune/controller/product/PhortuneProductViewController.php', - 'PhortuneProviderActionController' => 'applications/phortune/controller/provider/PhortuneProviderActionController.php', - 'PhortunePurchase' => 'applications/phortune/storage/PhortunePurchase.php', - 'PhortunePurchasePHIDType' => 'applications/phortune/phid/PhortunePurchasePHIDType.php', - 'PhortunePurchaseQuery' => 'applications/phortune/query/PhortunePurchaseQuery.php', - 'PhortuneSchemaSpec' => 'applications/phortune/storage/PhortuneSchemaSpec.php', - 'PhortuneStripePaymentProvider' => 'applications/phortune/provider/PhortuneStripePaymentProvider.php', - 'PhortuneSubscription' => 'applications/phortune/storage/PhortuneSubscription.php', - 'PhortuneSubscriptionAutopayTransaction' => 'applications/phortune/xaction/subscription/PhortuneSubscriptionAutopayTransaction.php', - 'PhortuneSubscriptionCart' => 'applications/phortune/cart/PhortuneSubscriptionCart.php', - 'PhortuneSubscriptionEditor' => 'applications/phortune/editor/PhortuneSubscriptionEditor.php', - 'PhortuneSubscriptionImplementation' => 'applications/phortune/subscription/PhortuneSubscriptionImplementation.php', - 'PhortuneSubscriptionPHIDType' => 'applications/phortune/phid/PhortuneSubscriptionPHIDType.php', - 'PhortuneSubscriptionPolicyCodex' => 'applications/phortune/codex/PhortuneSubscriptionPolicyCodex.php', - 'PhortuneSubscriptionProduct' => 'applications/phortune/product/PhortuneSubscriptionProduct.php', - 'PhortuneSubscriptionQuery' => 'applications/phortune/query/PhortuneSubscriptionQuery.php', - 'PhortuneSubscriptionSearchEngine' => 'applications/phortune/query/PhortuneSubscriptionSearchEngine.php', - 'PhortuneSubscriptionTableView' => 'applications/phortune/view/PhortuneSubscriptionTableView.php', - 'PhortuneSubscriptionTransaction' => 'applications/phortune/storage/PhortuneSubscriptionTransaction.php', - 'PhortuneSubscriptionTransactionQuery' => 'applications/phortune/query/PhortuneSubscriptionTransactionQuery.php', - 'PhortuneSubscriptionTransactionType' => 'applications/phortune/xaction/subscription/PhortuneSubscriptionTransactionType.php', - 'PhortuneSubscriptionWorker' => 'applications/phortune/worker/PhortuneSubscriptionWorker.php', - 'PhortuneTestPaymentProvider' => 'applications/phortune/provider/PhortuneTestPaymentProvider.php', 'PhrequentConduitAPIMethod' => 'applications/phrequent/conduit/PhrequentConduitAPIMethod.php', 'PhrequentController' => 'applications/phrequent/controller/PhrequentController.php', 'PhrequentCurtainExtension' => 'applications/phrequent/engineextension/PhrequentCurtainExtension.php', @@ -7425,66 +7182,6 @@ 'FuelMenuItemView' => 'FuelView', 'FuelMenuView' => 'FuelComponentView', 'FuelView' => 'AphrontView', - 'FundBacker' => array( - 'FundDAO', - 'PhabricatorPolicyInterface', - 'PhabricatorApplicationTransactionInterface', - ), - 'FundBackerCart' => 'PhortuneCartImplementation', - 'FundBackerEditor' => 'PhabricatorApplicationTransactionEditor', - 'FundBackerListController' => 'FundController', - 'FundBackerPHIDType' => 'PhabricatorPHIDType', - 'FundBackerProduct' => 'PhortuneProductImplementation', - 'FundBackerQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'FundBackerRefundTransaction' => 'FundBackerTransactionType', - 'FundBackerSearchEngine' => 'PhabricatorApplicationSearchEngine', - 'FundBackerStatusTransaction' => 'FundBackerTransactionType', - 'FundBackerTransaction' => 'PhabricatorModularTransaction', - 'FundBackerTransactionQuery' => 'PhabricatorApplicationTransactionQuery', - 'FundBackerTransactionType' => 'PhabricatorModularTransactionType', - 'FundController' => 'PhabricatorController', - 'FundCreateInitiativesCapability' => 'PhabricatorPolicyCapability', - 'FundDAO' => 'PhabricatorLiskDAO', - 'FundDefaultViewCapability' => 'PhabricatorPolicyCapability', - 'FundInitiative' => array( - 'FundDAO', - 'PhabricatorPolicyInterface', - 'PhabricatorProjectInterface', - 'PhabricatorApplicationTransactionInterface', - 'PhabricatorSubscribableInterface', - 'PhabricatorMentionableInterface', - 'PhabricatorFlaggableInterface', - 'PhabricatorTokenReceiverInterface', - 'PhabricatorDestructibleInterface', - 'PhabricatorFulltextInterface', - 'PhabricatorFerretInterface', - ), - 'FundInitiativeBackController' => 'FundController', - 'FundInitiativeBackerTransaction' => 'FundInitiativeTransactionType', - 'FundInitiativeCloseController' => 'FundController', - 'FundInitiativeDescriptionTransaction' => 'FundInitiativeTransactionType', - 'FundInitiativeEditController' => 'FundController', - 'FundInitiativeEditEngine' => 'PhabricatorEditEngine', - 'FundInitiativeEditor' => 'PhabricatorApplicationTransactionEditor', - 'FundInitiativeFerretEngine' => 'PhabricatorFerretEngine', - 'FundInitiativeFulltextEngine' => 'PhabricatorFulltextEngine', - 'FundInitiativeListController' => 'FundController', - 'FundInitiativeMerchantTransaction' => 'FundInitiativeTransactionType', - 'FundInitiativeNameTransaction' => 'FundInitiativeTransactionType', - 'FundInitiativePHIDType' => 'PhabricatorPHIDType', - 'FundInitiativeQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'FundInitiativeRefundTransaction' => 'FundInitiativeTransactionType', - 'FundInitiativeRemarkupRule' => 'PhabricatorObjectRemarkupRule', - 'FundInitiativeReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', - 'FundInitiativeRisksTransaction' => 'FundInitiativeTransactionType', - 'FundInitiativeSearchEngine' => 'PhabricatorApplicationSearchEngine', - 'FundInitiativeStatusTransaction' => 'FundInitiativeTransactionType', - 'FundInitiativeTransaction' => 'PhabricatorModularTransaction', - 'FundInitiativeTransactionComment' => 'PhabricatorApplicationTransactionComment', - 'FundInitiativeTransactionQuery' => 'PhabricatorApplicationTransactionQuery', - 'FundInitiativeTransactionType' => 'PhabricatorModularTransactionType', - 'FundInitiativeViewController' => 'FundController', - 'FundSchemaSpec' => 'PhabricatorConfigSchemaSpec', 'HarbormasterAbortOlderBuildsBuildStepImplementation' => 'HarbormasterBuildStepImplementation', 'HarbormasterArcLintBuildStepImplementation' => 'HarbormasterBuildStepImplementation', 'HarbormasterArcUnitBuildStepImplementation' => 'HarbormasterBuildStepImplementation', @@ -10038,7 +9735,6 @@ 'PhabricatorFulltextResultSet' => 'Phobject', 'PhabricatorFulltextStorageEngine' => 'Phobject', 'PhabricatorFulltextToken' => 'Phobject', - 'PhabricatorFundApplication' => 'PhabricatorApplication', 'PhabricatorGDSetupCheck' => 'PhabricatorSetupCheck', 'PhabricatorGarbageCollector' => 'Phobject', 'PhabricatorGarbageCollectorManagementCollectWorkflow' => 'PhabricatorGarbageCollectorManagementWorkflow', @@ -10547,24 +10243,7 @@ 'PhabricatorOwnersPathsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment', 'PhabricatorOwnersSchemaSpec' => 'PhabricatorConfigSchemaSpec', 'PhabricatorOwnersSearchField' => 'PhabricatorSearchTokenizerField', - 'PhabricatorPDFCatalogObject' => 'PhabricatorPDFObject', - 'PhabricatorPDFContentsObject' => 'PhabricatorPDFObject', 'PhabricatorPDFDocumentEngine' => 'PhabricatorDocumentEngine', - 'PhabricatorPDFFontObject' => 'PhabricatorPDFObject', - 'PhabricatorPDFFragment' => 'Phobject', - 'PhabricatorPDFFragmentOffset' => 'Phobject', - 'PhabricatorPDFGenerator' => 'Phobject', - 'PhabricatorPDFHeadFragment' => 'PhabricatorPDFFragment', - 'PhabricatorPDFInfoObject' => 'PhabricatorPDFObject', - 'PhabricatorPDFIterator' => array( - 'Phobject', - 'Iterator', - ), - 'PhabricatorPDFObject' => 'PhabricatorPDFFragment', - 'PhabricatorPDFPageObject' => 'PhabricatorPDFObject', - 'PhabricatorPDFPagesObject' => 'PhabricatorPDFObject', - 'PhabricatorPDFResourcesObject' => 'PhabricatorPDFObject', - 'PhabricatorPDFTailFragment' => 'PhabricatorPDFFragment', 'PhabricatorPHDConfigOptions' => 'PhabricatorApplicationConfigOptions', 'PhabricatorPHID' => 'Phobject', 'PhabricatorPHIDConstants' => 'Phobject', @@ -10807,11 +10486,6 @@ 'PhabricatorPholioMockTestDataGenerator' => 'PhabricatorTestDataGenerator', 'PhabricatorPhoneNumber' => 'Phobject', 'PhabricatorPhoneNumberTestCase' => 'PhabricatorTestCase', - 'PhabricatorPhortuneApplication' => 'PhabricatorApplication', - 'PhabricatorPhortuneContentSource' => 'PhabricatorContentSource', - 'PhabricatorPhortuneManagementInvoiceWorkflow' => 'PhabricatorPhortuneManagementWorkflow', - 'PhabricatorPhortuneManagementWorkflow' => 'PhabricatorManagementWorkflow', - 'PhabricatorPhortuneTestCase' => 'PhabricatorTestCase', 'PhabricatorPhrequentApplication' => 'PhabricatorApplication', 'PhabricatorPhrictionApplication' => 'PhabricatorApplication', 'PhabricatorPhurlApplication' => 'PhabricatorApplication', @@ -12212,229 +11886,6 @@ 'PholioUploadedImageView' => 'AphrontView', 'PhorgeCodeWarningSetupCheck' => 'PhabricatorSetupCheck', 'PhorgeSystemDeprecationWarningListener' => 'PhabricatorEventListener', - 'PhortuneAccount' => array( - 'PhortuneDAO', - 'PhabricatorApplicationTransactionInterface', - 'PhabricatorPolicyInterface', - ), - 'PhortuneAccountAddManagerController' => 'PhortuneAccountController', - 'PhortuneAccountBillingAddressTransaction' => 'PhortuneAccountTransactionType', - 'PhortuneAccountBillingNameTransaction' => 'PhortuneAccountTransactionType', - 'PhortuneAccountChargeListController' => 'PhortuneAccountProfileController', - 'PhortuneAccountChargesController' => 'PhortuneAccountProfileController', - 'PhortuneAccountController' => 'PhortuneController', - 'PhortuneAccountDetailsController' => 'PhortuneAccountProfileController', - 'PhortuneAccountEditController' => 'PhortuneController', - 'PhortuneAccountEditEngine' => 'PhabricatorEditEngine', - 'PhortuneAccountEditor' => 'PhabricatorApplicationTransactionEditor', - 'PhortuneAccountEmail' => array( - 'PhortuneDAO', - 'PhabricatorApplicationTransactionInterface', - 'PhabricatorPolicyInterface', - 'PhabricatorExtendedPolicyInterface', - ), - 'PhortuneAccountEmailAddressTransaction' => 'PhortuneAccountEmailTransactionType', - 'PhortuneAccountEmailAddressesController' => 'PhortuneAccountProfileController', - 'PhortuneAccountEmailEditController' => 'PhortuneAccountController', - 'PhortuneAccountEmailEditEngine' => 'PhabricatorEditEngine', - 'PhortuneAccountEmailEditor' => 'PhabricatorApplicationTransactionEditor', - 'PhortuneAccountEmailPHIDType' => 'PhabricatorPHIDType', - 'PhortuneAccountEmailQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhortuneAccountEmailRotateController' => 'PhortuneAccountController', - 'PhortuneAccountEmailRotateTransaction' => 'PhortuneAccountEmailTransactionType', - 'PhortuneAccountEmailStatus' => 'Phobject', - 'PhortuneAccountEmailStatusController' => 'PhortuneAccountController', - 'PhortuneAccountEmailStatusTransaction' => 'PhortuneAccountEmailTransactionType', - 'PhortuneAccountEmailTransaction' => 'PhabricatorModularTransaction', - 'PhortuneAccountEmailTransactionQuery' => 'PhabricatorApplicationTransactionQuery', - 'PhortuneAccountEmailTransactionType' => 'PhabricatorModularTransactionType', - 'PhortuneAccountEmailViewController' => 'PhortuneAccountController', - 'PhortuneAccountHasMemberEdgeType' => 'PhabricatorEdgeType', - 'PhortuneAccountHasMerchantEdgeType' => 'PhabricatorEdgeType', - 'PhortuneAccountListController' => 'PhortuneController', - 'PhortuneAccountManagersController' => 'PhortuneAccountProfileController', - 'PhortuneAccountNameTransaction' => 'PhortuneAccountTransactionType', - 'PhortuneAccountOrderListController' => 'PhortuneAccountProfileController', - 'PhortuneAccountOrdersController' => 'PhortuneAccountProfileController', - 'PhortuneAccountOverviewController' => 'PhortuneAccountProfileController', - 'PhortuneAccountPHIDType' => 'PhabricatorPHIDType', - 'PhortuneAccountPaymentMethodController' => 'PhortuneAccountProfileController', - 'PhortuneAccountPaymentMethodViewController' => 'PhortuneAccountController', - 'PhortuneAccountProfileController' => 'PhortuneAccountController', - 'PhortuneAccountQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhortuneAccountSubscriptionAutopayController' => 'PhortuneAccountController', - 'PhortuneAccountSubscriptionController' => 'PhortuneAccountProfileController', - 'PhortuneAccountSubscriptionViewController' => 'PhortuneAccountController', - 'PhortuneAccountTransaction' => 'PhabricatorModularTransaction', - 'PhortuneAccountTransactionQuery' => 'PhabricatorApplicationTransactionQuery', - 'PhortuneAccountTransactionType' => 'PhabricatorModularTransactionType', - 'PhortuneAdHocCart' => 'PhortuneCartImplementation', - 'PhortuneAdHocProduct' => 'PhortuneProductImplementation', - 'PhortuneAddPaymentMethodAction' => 'PhabricatorSystemAction', - 'PhortuneCart' => array( - 'PhortuneDAO', - 'PhabricatorApplicationTransactionInterface', - 'PhabricatorPolicyInterface', - 'PhabricatorExtendedPolicyInterface', - ), - 'PhortuneCartAcceptController' => 'PhortuneCartController', - 'PhortuneCartCancelController' => 'PhortuneCartController', - 'PhortuneCartCheckoutController' => 'PhortuneCartController', - 'PhortuneCartController' => 'PhortuneController', - 'PhortuneCartEditor' => 'PhabricatorApplicationTransactionEditor', - 'PhortuneCartImplementation' => 'Phobject', - 'PhortuneCartPHIDType' => 'PhabricatorPHIDType', - 'PhortuneCartQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhortuneCartReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', - 'PhortuneCartSearchEngine' => 'PhabricatorApplicationSearchEngine', - 'PhortuneCartTransaction' => 'PhabricatorApplicationTransaction', - 'PhortuneCartTransactionQuery' => 'PhabricatorApplicationTransactionQuery', - 'PhortuneCartUpdateController' => 'PhortuneCartController', - 'PhortuneCartViewController' => 'PhortuneCartController', - 'PhortuneCartVoidController' => 'PhortuneCartController', - 'PhortuneCharge' => array( - 'PhortuneDAO', - 'PhabricatorPolicyInterface', - 'PhabricatorExtendedPolicyInterface', - ), - 'PhortuneChargePHIDType' => 'PhabricatorPHIDType', - 'PhortuneChargeQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhortuneChargeSearchEngine' => 'PhabricatorApplicationSearchEngine', - 'PhortuneChargeTableView' => 'AphrontView', - 'PhortuneConstants' => 'Phobject', - 'PhortuneController' => 'PhabricatorController', - 'PhortuneCreditCardForm' => 'Phobject', - 'PhortuneCurrency' => 'Phobject', - 'PhortuneCurrencySerializer' => 'PhabricatorLiskSerializer', - 'PhortuneCurrencyTestCase' => 'PhabricatorTestCase', - 'PhortuneDAO' => 'PhabricatorLiskDAO', - 'PhortuneDisplayException' => 'Exception', - 'PhortuneErrCode' => 'PhortuneConstants', - 'PhortuneExternalController' => 'PhortuneController', - 'PhortuneExternalOrderController' => 'PhortuneExternalController', - 'PhortuneExternalOverviewController' => 'PhortuneExternalController', - 'PhortuneExternalUnsubscribeController' => 'PhortuneExternalController', - 'PhortuneLandingController' => 'PhortuneController', - 'PhortuneMemberHasAccountEdgeType' => 'PhabricatorEdgeType', - 'PhortuneMemberHasMerchantEdgeType' => 'PhabricatorEdgeType', - 'PhortuneMerchant' => array( - 'PhortuneDAO', - 'PhabricatorApplicationTransactionInterface', - 'PhabricatorPolicyInterface', - ), - 'PhortuneMerchantAddManagerController' => 'PhortuneMerchantController', - 'PhortuneMerchantCapability' => 'PhabricatorPolicyCapability', - 'PhortuneMerchantContactInfoTransaction' => 'PhortuneMerchantTransactionType', - 'PhortuneMerchantController' => 'PhortuneController', - 'PhortuneMerchantDescriptionTransaction' => 'PhortuneMerchantTransactionType', - 'PhortuneMerchantDetailsController' => 'PhortuneMerchantProfileController', - 'PhortuneMerchantEditController' => 'PhortuneController', - 'PhortuneMerchantEditEngine' => 'PhabricatorEditEngine', - 'PhortuneMerchantEditor' => 'PhabricatorApplicationTransactionEditor', - 'PhortuneMerchantHasAccountEdgeType' => 'PhabricatorEdgeType', - 'PhortuneMerchantHasMemberEdgeType' => 'PhabricatorEdgeType', - 'PhortuneMerchantInvoiceCreateController' => 'PhortuneMerchantController', - 'PhortuneMerchantInvoiceEmailTransaction' => 'PhortuneMerchantTransactionType', - 'PhortuneMerchantInvoiceFooterTransaction' => 'PhortuneMerchantTransactionType', - 'PhortuneMerchantListController' => 'PhortuneController', - 'PhortuneMerchantManagersController' => 'PhortuneMerchantProfileController', - 'PhortuneMerchantNameTransaction' => 'PhortuneMerchantTransactionType', - 'PhortuneMerchantOrderListController' => 'PhortuneMerchantProfileController', - 'PhortuneMerchantOrdersController' => 'PhortuneMerchantProfileController', - 'PhortuneMerchantOverviewController' => 'PhortuneMerchantProfileController', - 'PhortuneMerchantPHIDType' => 'PhabricatorPHIDType', - 'PhortuneMerchantPictureController' => 'PhortuneMerchantController', - 'PhortuneMerchantPictureTransaction' => 'PhortuneMerchantTransactionType', - 'PhortuneMerchantProfileController' => 'PhortuneMerchantController', - 'PhortuneMerchantProviderDisableController' => 'PhortuneMerchantController', - 'PhortuneMerchantProviderEditController' => 'PhortuneMerchantController', - 'PhortuneMerchantProviderViewController' => 'PhortuneMerchantController', - 'PhortuneMerchantProvidersController' => 'PhortuneMerchantProfileController', - 'PhortuneMerchantQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhortuneMerchantSearchEngine' => 'PhabricatorApplicationSearchEngine', - 'PhortuneMerchantSubscriptionListController' => 'PhortuneMerchantProfileController', - 'PhortuneMerchantSubscriptionsController' => 'PhortuneMerchantProfileController', - 'PhortuneMerchantTransaction' => 'PhabricatorModularTransaction', - 'PhortuneMerchantTransactionQuery' => 'PhabricatorApplicationTransactionQuery', - 'PhortuneMerchantTransactionType' => 'PhabricatorModularTransactionType', - 'PhortuneMonthYearExpiryControl' => 'AphrontFormControl', - 'PhortuneOrderDescriptionView' => 'AphrontView', - 'PhortuneOrderItemsView' => 'PhortuneOrderView', - 'PhortuneOrderSummaryView' => 'PhortuneOrderView', - 'PhortuneOrderTableView' => 'AphrontView', - 'PhortuneOrderView' => 'AphrontView', - 'PhortunePayPalPaymentProvider' => 'PhortunePaymentProvider', - 'PhortunePaymentMethod' => array( - 'PhortuneDAO', - 'PhabricatorPolicyInterface', - 'PhabricatorExtendedPolicyInterface', - 'PhabricatorPolicyCodexInterface', - 'PhabricatorApplicationTransactionInterface', - ), - 'PhortunePaymentMethodCreateController' => 'PhortuneController', - 'PhortunePaymentMethodDisableController' => 'PhortuneController', - 'PhortunePaymentMethodEditController' => 'PhortuneController', - 'PhortunePaymentMethodEditor' => 'PhabricatorApplicationTransactionEditor', - 'PhortunePaymentMethodNameTransaction' => 'PhortunePaymentMethodTransactionType', - 'PhortunePaymentMethodPHIDType' => 'PhabricatorPHIDType', - 'PhortunePaymentMethodPolicyCodex' => 'PhabricatorPolicyCodex', - 'PhortunePaymentMethodQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhortunePaymentMethodStatusTransaction' => 'PhortunePaymentMethodTransactionType', - 'PhortunePaymentMethodTransaction' => 'PhabricatorModularTransaction', - 'PhortunePaymentMethodTransactionQuery' => 'PhabricatorApplicationTransactionQuery', - 'PhortunePaymentMethodTransactionType' => 'PhabricatorModularTransactionType', - 'PhortunePaymentProvider' => 'Phobject', - 'PhortunePaymentProviderConfig' => array( - 'PhortuneDAO', - 'PhabricatorPolicyInterface', - 'PhabricatorApplicationTransactionInterface', - ), - 'PhortunePaymentProviderConfigEditor' => 'PhabricatorApplicationTransactionEditor', - 'PhortunePaymentProviderConfigQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhortunePaymentProviderConfigTransaction' => 'PhabricatorApplicationTransaction', - 'PhortunePaymentProviderConfigTransactionQuery' => 'PhabricatorApplicationTransactionQuery', - 'PhortunePaymentProviderPHIDType' => 'PhabricatorPHIDType', - 'PhortunePaymentProviderTestCase' => 'PhabricatorTestCase', - 'PhortuneProduct' => array( - 'PhortuneDAO', - 'PhabricatorPolicyInterface', - ), - 'PhortuneProductImplementation' => 'Phobject', - 'PhortuneProductListController' => 'PhabricatorController', - 'PhortuneProductPHIDType' => 'PhabricatorPHIDType', - 'PhortuneProductQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhortuneProductViewController' => 'PhortuneController', - 'PhortuneProviderActionController' => 'PhortuneController', - 'PhortunePurchase' => array( - 'PhortuneDAO', - 'PhabricatorPolicyInterface', - ), - 'PhortunePurchasePHIDType' => 'PhabricatorPHIDType', - 'PhortunePurchaseQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhortuneSchemaSpec' => 'PhabricatorConfigSchemaSpec', - 'PhortuneStripePaymentProvider' => 'PhortunePaymentProvider', - 'PhortuneSubscription' => array( - 'PhortuneDAO', - 'PhabricatorPolicyInterface', - 'PhabricatorExtendedPolicyInterface', - 'PhabricatorPolicyCodexInterface', - 'PhabricatorApplicationTransactionInterface', - ), - 'PhortuneSubscriptionAutopayTransaction' => 'PhortuneSubscriptionTransactionType', - 'PhortuneSubscriptionCart' => 'PhortuneCartImplementation', - 'PhortuneSubscriptionEditor' => 'PhabricatorApplicationTransactionEditor', - 'PhortuneSubscriptionImplementation' => 'Phobject', - 'PhortuneSubscriptionPHIDType' => 'PhabricatorPHIDType', - 'PhortuneSubscriptionPolicyCodex' => 'PhabricatorPolicyCodex', - 'PhortuneSubscriptionProduct' => 'PhortuneProductImplementation', - 'PhortuneSubscriptionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhortuneSubscriptionSearchEngine' => 'PhabricatorApplicationSearchEngine', - 'PhortuneSubscriptionTableView' => 'AphrontView', - 'PhortuneSubscriptionTransaction' => 'PhabricatorModularTransaction', - 'PhortuneSubscriptionTransactionQuery' => 'PhabricatorApplicationTransactionQuery', - 'PhortuneSubscriptionTransactionType' => 'PhabricatorModularTransactionType', - 'PhortuneSubscriptionWorker' => 'PhabricatorWorker', - 'PhortuneTestPaymentProvider' => 'PhortunePaymentProvider', 'PhrequentConduitAPIMethod' => 'ConduitAPIMethod', 'PhrequentController' => 'PhabricatorController', 'PhrequentCurtainExtension' => 'PHUICurtainExtension', diff --git a/src/applications/fund/application/PhabricatorFundApplication.php b/src/applications/fund/application/PhabricatorFundApplication.php deleted file mode 100644 --- a/src/applications/fund/application/PhabricatorFundApplication.php +++ /dev/null @@ -1,77 +0,0 @@ -[1-9]\d*)' => 'FundInitiativeViewController', - '/fund/' => array( - '(?:query/(?P[^/]+)/)?' => 'FundInitiativeListController', - 'create/' => 'FundInitiativeEditController', - $this->getEditRoutePattern('edit/') - => 'FundInitiativeEditController', - 'close/(?P\d+)/' => 'FundInitiativeCloseController', - 'back/(?P\d+)/' => 'FundInitiativeBackController', - 'backers/(?:(?P\d+)/)?(?:query/(?P[^/]+)/)?' - => 'FundBackerListController', - ), - ); - } - - protected function getCustomCapabilities() { - return array( - FundDefaultViewCapability::CAPABILITY => array( - 'caption' => pht('Default view policy for newly created initiatives.'), - 'template' => FundInitiativePHIDType::TYPECONST, - ), - FundCreateInitiativesCapability::CAPABILITY => array( - 'default' => PhabricatorPolicies::POLICY_ADMIN, - ), - ); - } - - public function getApplicationSearchDocumentTypes() { - return array( - FundInitiativePHIDType::TYPECONST, - ); - } - -} diff --git a/src/applications/fund/capability/FundCreateInitiativesCapability.php b/src/applications/fund/capability/FundCreateInitiativesCapability.php deleted file mode 100644 --- a/src/applications/fund/capability/FundCreateInitiativesCapability.php +++ /dev/null @@ -1,16 +0,0 @@ -getViewer(); - $id = $request->getURIData('id'); - $querykey = $request->getURIData('queryKey'); - - if ($id) { - $this->initiative = id(new FundInitiativeQuery()) - ->setViewer($viewer) - ->withIDs(array($id)) - ->executeOne(); - if (!$this->initiative) { - return new Aphront404Response(); - } - } - - $controller = id(new PhabricatorApplicationSearchController()) - ->setQueryKey($querykey) - ->setSearchEngine($this->getEngine()) - ->setNavigation($this->buildSideNavView()); - - return $this->delegateToController($controller); - } - - public function buildSideNavView() { - $user = $this->getRequest()->getUser(); - - $nav = new AphrontSideNavFilterView(); - $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); - - $this->getEngine()->addNavigationItems($nav->getMenu()); - - $nav->selectFilter(null); - - return $nav; - } - - protected function buildApplicationCrumbs() { - $crumbs = parent::buildApplicationCrumbs(); - $crumbs->addTextCrumb( - pht('Backers'), - $this->getApplicationURI('backers/')); - - if ($this->initiative) { - $crumbs->addTextCrumb( - $this->initiative->getMonogram(), - '/'.$this->initiative->getMonogram()); - } - - return $crumbs; - } - - private function getEngine() { - $viewer = $this->getViewer(); - - $engine = id(new FundBackerSearchEngine()) - ->setViewer($viewer); - - if ($this->initiative) { - $engine->setInitiative($this->initiative); - } - - return $engine; - } - -} diff --git a/src/applications/fund/controller/FundController.php b/src/applications/fund/controller/FundController.php deleted file mode 100644 --- a/src/applications/fund/controller/FundController.php +++ /dev/null @@ -1,3 +0,0 @@ -getViewer(); - $id = $request->getURIData('id'); - - $initiative = id(new FundInitiativeQuery()) - ->setViewer($viewer) - ->withIDs(array($id)) - ->executeOne(); - if (!$initiative) { - return new Aphront404Response(); - } - - $merchant = id(new PhortuneMerchantQuery()) - ->setViewer($viewer) - ->withPHIDs(array($initiative->getMerchantPHID())) - ->executeOne(); - if (!$merchant) { - return new Aphront404Response(); - } - - $initiative_uri = '/'.$initiative->getMonogram(); - - if ($initiative->isClosed()) { - return $this->newDialog() - ->setTitle(pht('Initiative Closed')) - ->appendParagraph( - pht('You can not back a closed initiative.')) - ->addCancelButton($initiative_uri); - } - - $accounts = PhortuneAccountQuery::loadAccountsForUser( - $viewer, - PhabricatorContentSource::newFromRequest($request)); - - $v_amount = null; - $e_amount = true; - - $v_account = head($accounts)->getPHID(); - - $errors = array(); - if ($request->isFormPost()) { - $v_amount = $request->getStr('amount'); - $v_account = $request->getStr('accountPHID'); - - if (empty($accounts[$v_account])) { - $errors[] = pht('You must specify an account.'); - } else { - $account = $accounts[$v_account]; - } - - if (!strlen($v_amount)) { - $errors[] = pht( - 'You must specify how much money you want to contribute to the '. - 'initiative.'); - $e_amount = pht('Required'); - } else { - try { - $currency = PhortuneCurrency::newFromUserInput( - $viewer, - $v_amount); - $currency->assertInRange('1.00 USD', null); - } catch (Exception $ex) { - $errors[] = $ex->getMessage(); - $e_amount = pht('Invalid'); - } - } - - if (!$errors) { - $backer = FundBacker::initializeNewBacker($viewer) - ->setInitiativePHID($initiative->getPHID()) - ->attachInitiative($initiative) - ->setAmountAsCurrency($currency) - ->save(); - - $product = id(new PhortuneProductQuery()) - ->setViewer($viewer) - ->withClassAndRef('FundBackerProduct', $initiative->getPHID()) - ->executeOne(); - - $cart_implementation = id(new FundBackerCart()) - ->setInitiative($initiative); - - $cart = $account->newCart($viewer, $cart_implementation, $merchant); - - $purchase = $cart->newPurchase($viewer, $product); - $purchase - ->setBasePriceAsCurrency($currency) - ->setMetadataValue('backerPHID', $backer->getPHID()) - ->save(); - - $xactions = array(); - - $xactions[] = id(new FundBackerTransaction()) - ->setTransactionType(FundBackerStatusTransaction::TRANSACTIONTYPE) - ->setNewValue(FundBacker::STATUS_IN_CART); - - $editor = id(new FundBackerEditor()) - ->setActor($viewer) - ->setContentSourceFromRequest($request); - - $editor->applyTransactions($backer, $xactions); - - $cart->activateCart(); - - return id(new AphrontRedirectResponse()) - ->setURI($cart->getCheckoutURI()); - } - } - - $form = id(new AphrontFormView()) - ->setUser($viewer) - ->appendChild( - id(new AphrontFormSelectControl()) - ->setName('accountPHID') - ->setLabel(pht('Account')) - ->setValue($v_account) - ->setOptions(mpull($accounts, 'getName', 'getPHID'))) - ->appendChild( - id(new AphrontFormTextControl()) - ->setName('amount') - ->setLabel(pht('Amount')) - ->setValue($v_amount) - ->setError($e_amount)); - - return $this->newDialog() - ->setTitle( - pht('Back %s %s', $initiative->getMonogram(), $initiative->getName())) - ->setErrors($errors) - ->appendChild($form->buildLayoutView()) - ->addCancelButton($initiative_uri) - ->addSubmitButton(pht('Continue')); - } - -} diff --git a/src/applications/fund/controller/FundInitiativeCloseController.php b/src/applications/fund/controller/FundInitiativeCloseController.php deleted file mode 100644 --- a/src/applications/fund/controller/FundInitiativeCloseController.php +++ /dev/null @@ -1,69 +0,0 @@ -getViewer(); - $id = $request->getURIData('id'); - - $initiative = id(new FundInitiativeQuery()) - ->setViewer($viewer) - ->withIDs(array($id)) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - if (!$initiative) { - return new Aphront404Response(); - } - - $initiative_uri = '/'.$initiative->getMonogram(); - - $is_close = !$initiative->isClosed(); - - if ($request->isFormPost()) { - $type_status = FundInitiativeStatusTransaction::TRANSACTIONTYPE; - - if ($is_close) { - $new_status = FundInitiative::STATUS_CLOSED; - } else { - $new_status = FundInitiative::STATUS_OPEN; - } - - $xaction = id(new FundInitiativeTransaction()) - ->setTransactionType($type_status) - ->setNewValue($new_status); - - $editor = id(new FundInitiativeEditor()) - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnMissingFields(true); - - $editor->applyTransactions($initiative, array($xaction)); - - return id(new AphrontRedirectResponse())->setURI($initiative_uri); - } - - if ($is_close) { - $title = pht('Close Initiative?'); - $body = pht( - 'Really close this initiative? Users will no longer be able to '. - 'back it.'); - $button_text = pht('Close Initiative'); - } else { - $title = pht('Reopen Initiative?'); - $body = pht('Really reopen this initiative?'); - $button_text = pht('Reopen Initiative'); - } - - return $this->newDialog() - ->setTitle($title) - ->appendParagraph($body) - ->addCancelButton($initiative_uri) - ->addSubmitButton($button_text); - } - -} diff --git a/src/applications/fund/controller/FundInitiativeEditController.php b/src/applications/fund/controller/FundInitiativeEditController.php deleted file mode 100644 --- a/src/applications/fund/controller/FundInitiativeEditController.php +++ /dev/null @@ -1,11 +0,0 @@ -setController($this) - ->buildResponse(); - } - -} diff --git a/src/applications/fund/controller/FundInitiativeListController.php b/src/applications/fund/controller/FundInitiativeListController.php deleted file mode 100644 --- a/src/applications/fund/controller/FundInitiativeListController.php +++ /dev/null @@ -1,56 +0,0 @@ -getURIData('queryKey'); - - $controller = id(new PhabricatorApplicationSearchController()) - ->setQueryKey($querykey) - ->setSearchEngine(new FundInitiativeSearchEngine()) - ->setNavigation($this->buildSideNavView()); - - return $this->delegateToController($controller); - } - - public function buildSideNavView() { - $viewer = $this->getViewer(); - - $nav = new AphrontSideNavFilterView(); - $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); - - id(new FundInitiativeSearchEngine()) - ->setViewer($viewer) - ->addNavigationItems($nav->getMenu()); - - $nav->addLabel(pht('Backers')); - $nav->addFilter('backers/', pht('Find Backers')); - - $nav->selectFilter(null); - - return $nav; - } - - protected function buildApplicationCrumbs() { - $crumbs = parent::buildApplicationCrumbs(); - - $can_create = $this->hasApplicationCapability( - FundCreateInitiativesCapability::CAPABILITY); - - $crumbs->addAction( - id(new PHUIListItemView()) - ->setName(pht('Create Initiative')) - ->setHref($this->getApplicationURI('create/')) - ->setIcon('fa-plus-square') - ->setDisabled(!$can_create) - ->setWorkflow(!$can_create)); - - return $crumbs; - } - -} diff --git a/src/applications/fund/controller/FundInitiativeViewController.php b/src/applications/fund/controller/FundInitiativeViewController.php deleted file mode 100644 --- a/src/applications/fund/controller/FundInitiativeViewController.php +++ /dev/null @@ -1,179 +0,0 @@ -getViewer(); - $id = $request->getURIData('id'); - - $initiative = id(new FundInitiativeQuery()) - ->setViewer($viewer) - ->withIDs(array($id)) - ->executeOne(); - if (!$initiative) { - return new Aphront404Response(); - } - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->addTextCrumb($initiative->getMonogram()); - $crumbs->setBorder(true); - - $title = pht( - '%s %s', - $initiative->getMonogram(), - $initiative->getName()); - - if ($initiative->isClosed()) { - $status_icon = 'fa-ban'; - $status_color = 'indigo'; - } else { - $status_icon = 'fa-check'; - $status_color = 'bluegrey'; - } - $status_name = idx( - FundInitiative::getStatusNameMap(), - $initiative->getStatus()); - - $header = id(new PHUIHeaderView()) - ->setHeader($initiative->getName()) - ->setUser($viewer) - ->setPolicyObject($initiative) - ->setStatus($status_icon, $status_color, $status_name) - ->setHeaderIcon('fa-heart'); - - $curtain = $this->buildCurtain($initiative); - $details = $this->buildPropertySectionView($initiative); - - $timeline = $this->buildTransactionTimeline( - $initiative, - new FundInitiativeTransactionQuery()); - $timeline->setQuoteRef($initiative->getMonogram()); - - $comment_view = $this->buildCommentForm($initiative, $timeline); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setCurtain($curtain) - ->setMainColumn(array( - $timeline, - $comment_view, - )) - ->addPropertySection(pht('Details'), $details); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setPageObjectPHIDs(array($initiative->getPHID())) - ->appendChild($view); - } - - private function buildPropertySectionView(FundInitiative $initiative) { - $viewer = $this->getRequest()->getUser(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer); - - $owner_phid = $initiative->getOwnerPHID(); - $merchant_phid = $initiative->getMerchantPHID(); - - $view->addProperty( - pht('Owner'), - $viewer->renderHandle($owner_phid)); - - $view->addProperty( - pht('Payable to Merchant'), - $viewer->renderHandle($merchant_phid)); - - $view->addProperty( - pht('Total Funding'), - $initiative->getTotalAsCurrency()->formatForDisplay()); - - $description = $initiative->getDescription(); - if (strlen($description)) { - $description = new PHUIRemarkupView($viewer, $description); - $view->addSectionHeader( - pht('Description'), PHUIPropertyListView::ICON_SUMMARY); - $view->addTextContent($description); - } - - $risks = $initiative->getRisks(); - if (strlen($risks)) { - $risks = new PHUIRemarkupView($viewer, $risks); - $view->addSectionHeader( - pht('Risks/Challenges'), 'fa-ambulance'); - $view->addTextContent($risks); - } - - return $view; - } - - private function buildCurtain(FundInitiative $initiative) { - $viewer = $this->getViewer(); - - $id = $initiative->getID(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $initiative, - PhabricatorPolicyCapability::CAN_EDIT); - - $curtain = $this->newCurtainView($initiative); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Edit Initiative')) - ->setIcon('fa-pencil') - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit) - ->setHref($this->getApplicationURI("/edit/{$id}/"))); - - if ($initiative->isClosed()) { - $close_name = pht('Reopen Initiative'); - $close_icon = 'fa-check'; - } else { - $close_name = pht('Close Initiative'); - $close_icon = 'fa-times'; - } - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName($close_name) - ->setIcon($close_icon) - ->setDisabled(!$can_edit) - ->setWorkflow(true) - ->setHref($this->getApplicationURI("/close/{$id}/"))); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Back Initiative')) - ->setIcon('fa-money') - ->setDisabled($initiative->isClosed()) - ->setWorkflow(true) - ->setHref($this->getApplicationURI("/back/{$id}/"))); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('View Backers')) - ->setIcon('fa-bank') - ->setHref($this->getApplicationURI("/backers/{$id}/"))); - - return $curtain; - } - - private function buildCommentForm(FundInitiative $initiative, $timeline) { - $viewer = $this->getViewer(); - $box = id(new FundInitiativeEditEngine()) - ->setViewer($viewer) - ->buildEditEngineCommentView($initiative) - ->setTransactionTimeline($timeline); - - return $box; - } - - -} diff --git a/src/applications/fund/editor/FundBackerEditor.php b/src/applications/fund/editor/FundBackerEditor.php deleted file mode 100644 --- a/src/applications/fund/editor/FundBackerEditor.php +++ /dev/null @@ -1,14 +0,0 @@ -getViewer()); - } - - protected function newObjectQuery() { - return new FundInitiativeQuery(); - } - - protected function getObjectCreateTitleText($object) { - return pht('Create New Initiative'); - } - - protected function getObjectEditTitleText($object) { - return pht('Edit Initiative: %s', $object->getName()); - } - - protected function getObjectEditShortText($object) { - return $object->getName(); - } - - protected function getObjectCreateShortText() { - return pht('Create Initiative'); - } - - protected function getObjectName() { - return pht('Initiative'); - } - - protected function getObjectCreateCancelURI($object) { - return $this->getApplication()->getApplicationURI('/'); - } - - protected function getEditorURI() { - return $this->getApplication()->getApplicationURI('edit/'); - } - - protected function getObjectViewURI($object) { - return $object->getViewURI(); - } - - protected function getCreateNewObjectPolicy() { - return $this->getApplication()->getPolicy( - FundCreateInitiativesCapability::CAPABILITY); - } - - protected function buildCustomEditFields($object) { - $viewer = $this->getViewer(); - $v_merchant = $object->getMerchantPHID(); - - $merchants = id(new PhortuneMerchantQuery()) - ->setViewer($viewer) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->execute(); - - $merchant_options = array(); - foreach ($merchants as $merchant) { - $merchant_options[$merchant->getPHID()] = pht( - 'Merchant %d %s', - $merchant->getID(), - $merchant->getName()); - } - - if ($v_merchant && empty($merchant_options[$v_merchant])) { - $merchant_options = array( - $v_merchant => pht('(Restricted Merchant)'), - ) + $merchant_options; - } - - $merchant_instructions = null; - if (!$merchant_options) { - $merchant_instructions = pht( - 'NOTE: You do not control any merchant accounts which can receive '. - 'payments from this initiative. When you create an initiative, '. - 'you need to specify a merchant account where funds will be paid '. - 'to. Create a merchant account in the Phortune application before '. - 'creating an initiative in Fund.'); - } - - return array( - id(new PhabricatorTextEditField()) - ->setKey('name') - ->setLabel(pht('Name')) - ->setDescription(pht('Initiative name.')) - ->setConduitTypeDescription(pht('New initiative name.')) - ->setTransactionType( - FundInitiativeNameTransaction::TRANSACTIONTYPE) - ->setValue($object->getName()) - ->setIsRequired(true), - id(new PhabricatorSelectEditField()) - ->setKey('merchantPHID') - ->setLabel(pht('Merchant')) - ->setDescription(pht('Merchant operating the initiative.')) - ->setConduitTypeDescription(pht('New initiative merchant.')) - ->setControlInstructions($merchant_instructions) - ->setValue($object->getMerchantPHID()) - ->setTransactionType( - FundInitiativeMerchantTransaction::TRANSACTIONTYPE) - ->setOptions($merchant_options) - ->setIsRequired(true), - id(new PhabricatorRemarkupEditField()) - ->setKey('description') - ->setLabel(pht('Description')) - ->setDescription(pht('Initiative long description.')) - ->setConduitTypeDescription(pht('New initiative description.')) - ->setTransactionType( - FundInitiativeDescriptionTransaction::TRANSACTIONTYPE) - ->setValue($object->getDescription()), - id(new PhabricatorRemarkupEditField()) - ->setKey('risks') - ->setLabel(pht('Risks/Challenges')) - ->setDescription(pht('Initiative risks and challenges.')) - ->setConduitTypeDescription(pht('Initiative risks and challenges.')) - ->setTransactionType( - FundInitiativeRisksTransaction::TRANSACTIONTYPE) - ->setValue($object->getRisks()), - - ); - - } - -} diff --git a/src/applications/fund/editor/FundInitiativeEditor.php b/src/applications/fund/editor/FundInitiativeEditor.php deleted file mode 100644 --- a/src/applications/fund/editor/FundInitiativeEditor.php +++ /dev/null @@ -1,92 +0,0 @@ - - pht('Someone backs an initiative.'), - FundInitiativeTransaction::MAILTAG_STATUS => - pht("An initiative's status changes."), - FundInitiativeTransaction::MAILTAG_OTHER => - pht('Other initiative activity not listed above occurs.'), - ); - } - - protected function buildMailTemplate(PhabricatorLiskDAO $object) { - $monogram = $object->getMonogram(); - $name = $object->getName(); - - return id(new PhabricatorMetaMTAMail()) - ->setSubject("{$monogram}: {$name}"); - } - - protected function buildMailBody( - PhabricatorLiskDAO $object, - array $xactions) { - - $body = parent::buildMailBody($object, $xactions); - - $body->addLinkSection( - pht('INITIATIVE DETAIL'), - PhabricatorEnv::getProductionURI('/'.$object->getMonogram())); - - return $body; - } - - protected function getMailTo(PhabricatorLiskDAO $object) { - return array($object->getOwnerPHID()); - } - - protected function getMailSubjectPrefix() { - return 'Fund'; - } - - protected function buildReplyHandler(PhabricatorLiskDAO $object) { - return id(new FundInitiativeReplyHandler()) - ->setMailReceiver($object); - } - - protected function shouldPublishFeedStory( - PhabricatorLiskDAO $object, - array $xactions) { - return true; - } - - protected function supportsSearch() { - return true; - } - -} diff --git a/src/applications/fund/mail/FundInitiativeReplyHandler.php b/src/applications/fund/mail/FundInitiativeReplyHandler.php deleted file mode 100644 --- a/src/applications/fund/mail/FundInitiativeReplyHandler.php +++ /dev/null @@ -1,16 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $initiative = $objects[$phid]; - - $id = $initiative->getID(); - $monogram = $initiative->getMonogram(); - $name = $initiative->getName(); - - $handle->setName($name); - $handle->setFullName("{$monogram} {$name}"); - $handle->setURI("/fund/view/{$id}/"); - } - } - -} diff --git a/src/applications/fund/phid/FundInitiativePHIDType.php b/src/applications/fund/phid/FundInitiativePHIDType.php deleted file mode 100644 --- a/src/applications/fund/phid/FundInitiativePHIDType.php +++ /dev/null @@ -1,78 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $initiative = $objects[$phid]; - - $id = $initiative->getID(); - $monogram = $initiative->getMonogram(); - $name = $initiative->getName(); - - if ($initiative->isClosed()) { - $handle->setStatus(PhabricatorObjectHandle::STATUS_CLOSED); - } - - $handle->setName($name); - $handle->setFullName("{$monogram} {$name}"); - $handle->setURI("/I{$id}"); - } - } - - public function canLoadNamedObject($name) { - return preg_match('/^I\d*[1-9]\d*$/i', $name); - } - - public function loadNamedObjects( - PhabricatorObjectQuery $query, - array $names) { - - $id_map = array(); - foreach ($names as $name) { - $id = (int)substr($name, 1); - $id_map[$id][] = $name; - } - - $objects = id(new FundInitiativeQuery()) - ->setViewer($query->getViewer()) - ->withIDs(array_keys($id_map)) - ->execute(); - - $results = array(); - foreach ($objects as $id => $object) { - foreach (idx($id_map, $id, array()) as $name) { - $results[$name] = $object; - } - } - - return $results; - } - -} diff --git a/src/applications/fund/phortune/FundBackerCart.php b/src/applications/fund/phortune/FundBackerCart.php deleted file mode 100644 --- a/src/applications/fund/phortune/FundBackerCart.php +++ /dev/null @@ -1,87 +0,0 @@ -initiativePHID = $initiative_phid; - return $this; - } - - public function getInitiativePHID() { - return $this->initiativePHID; - } - - public function setInitiative(FundInitiative $initiative) { - $this->initiative = $initiative; - return $this; - } - - public function getInitiative() { - return $this->initiative; - } - - public function getName(PhortuneCart $cart) { - return pht('Fund Initiative'); - } - - public function willCreateCart( - PhabricatorUser $viewer, - PhortuneCart $cart) { - - $initiative = $this->getInitiative(); - if (!$initiative) { - throw new PhutilInvalidStateException('setInitiative'); - } - - $cart->setMetadataValue('initiativePHID', $initiative->getPHID()); - } - - public function loadImplementationsForCarts( - PhabricatorUser $viewer, - array $carts) { - - $phids = array(); - foreach ($carts as $cart) { - $phids[] = $cart->getMetadataValue('initiativePHID'); - } - - $initiatives = id(new FundInitiativeQuery()) - ->setViewer($viewer) - ->withPHIDs($phids) - ->execute(); - $initiatives = mpull($initiatives, null, 'getPHID'); - - $objects = array(); - foreach ($carts as $key => $cart) { - $initiative_phid = $cart->getMetadataValue('initiativePHID'); - - $object = id(new FundBackerCart()) - ->setInitiativePHID($initiative_phid); - - $initiative = idx($initiatives, $initiative_phid); - if ($initiative) { - $object->setInitiative($initiative); - } - - $objects[$key] = $object; - } - - return $objects; - } - - public function getCancelURI(PhortuneCart $cart) { - return '/'.$this->getInitiative()->getMonogram(); - } - - public function getDoneURI(PhortuneCart $cart) { - return '/'.$this->getInitiative()->getMonogram(); - } - - public function getDoneActionName(PhortuneCart $cart) { - return pht('Return to Initiative'); - } - -} diff --git a/src/applications/fund/phortune/FundBackerProduct.php b/src/applications/fund/phortune/FundBackerProduct.php deleted file mode 100644 --- a/src/applications/fund/phortune/FundBackerProduct.php +++ /dev/null @@ -1,153 +0,0 @@ -viewer = $viewer; - return $this; - } - - public function getViewer() { - return $this->viewer; - } - - public function getRef() { - return $this->getInitiativePHID(); - } - - public function getName(PhortuneProduct $product) { - $initiative = $this->getInitiative(); - - if (!$initiative) { - return pht('Fund '); - } else { - return pht( - 'Fund %s %s', - $initiative->getMonogram(), - $initiative->getName()); - } - } - - public function getPriceAsCurrency(PhortuneProduct $product) { - return PhortuneCurrency::newEmptyCurrency(); - } - - public function setInitiativePHID($initiative_phid) { - $this->initiativePHID = $initiative_phid; - return $this; - } - - public function getInitiativePHID() { - return $this->initiativePHID; - } - - public function setInitiative(FundInitiative $initiative) { - $this->initiative = $initiative; - return $this; - } - - public function getInitiative() { - return $this->initiative; - } - - public function loadImplementationsForRefs( - PhabricatorUser $viewer, - array $refs) { - - $initiatives = id(new FundInitiativeQuery()) - ->setViewer($viewer) - ->withPHIDs($refs) - ->execute(); - $initiatives = mpull($initiatives, null, 'getPHID'); - - $objects = array(); - foreach ($refs as $ref) { - $object = id(new FundBackerProduct()) - ->setViewer($viewer) - ->setInitiativePHID($ref); - - $initiative = idx($initiatives, $ref); - if ($initiative) { - $object->setInitiative($initiative); - } - - $objects[] = $object; - } - - return $objects; - } - - public function didPurchaseProduct( - PhortuneProduct $product, - PhortunePurchase $purchase) { - $viewer = $this->getViewer(); - - $backer = id(new FundBackerQuery()) - ->setViewer($viewer) - ->withPHIDs(array($purchase->getMetadataValue('backerPHID'))) - ->executeOne(); - if (!$backer) { - throw new Exception(pht('Unable to load %s!', 'FundBacker')); - } - - // Load the actual backing user -- they may not be the curent viewer if this - // product purchase is completing from a background worker or a merchant - // action. - - $actor = id(new PhabricatorPeopleQuery()) - ->setViewer($viewer) - ->withPHIDs(array($backer->getBackerPHID())) - ->executeOne(); - - $xactions = array(); - $xactions[] = id(new FundInitiativeTransaction()) - ->setTransactionType(FundInitiativeBackerTransaction::TRANSACTIONTYPE) - ->setMetadataValue( - FundInitiativeTransaction::PROPERTY_AMOUNT, - $backer->getAmountAsCurrency()->serializeForStorage()) - ->setNewValue($backer->getPHID()); - - $editor = id(new FundInitiativeEditor()) - ->setActor($actor) - ->setContentSource($this->getContentSource()); - - $editor->applyTransactions($this->getInitiative(), $xactions); - } - - public function didRefundProduct( - PhortuneProduct $product, - PhortunePurchase $purchase, - PhortuneCurrency $amount) { - $viewer = $this->getViewer(); - - $backer = id(new FundBackerQuery()) - ->setViewer($viewer) - ->withPHIDs(array($purchase->getMetadataValue('backerPHID'))) - ->executeOne(); - if (!$backer) { - throw new Exception(pht('Unable to load %s!', 'FundBacker')); - } - - $xactions = array(); - $xactions[] = id(new FundInitiativeTransaction()) - ->setTransactionType(FundInitiativeRefundTransaction::TRANSACTIONTYPE) - ->setMetadataValue( - FundInitiativeTransaction::PROPERTY_AMOUNT, - $amount->serializeForStorage()) - ->setMetadataValue( - FundInitiativeTransaction::PROPERTY_BACKER, - $backer->getBackerPHID()) - ->setNewValue($backer->getPHID()); - - $editor = id(new FundInitiativeEditor()) - ->setActor($viewer) - ->setContentSource($this->getContentSource()); - - $editor->applyTransactions($this->getInitiative(), $xactions); - } - -} diff --git a/src/applications/fund/query/FundBackerQuery.php b/src/applications/fund/query/FundBackerQuery.php deleted file mode 100644 --- a/src/applications/fund/query/FundBackerQuery.php +++ /dev/null @@ -1,118 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withStatuses(array $statuses) { - $this->statuses = $statuses; - return $this; - } - - public function withInitiativePHIDs(array $phids) { - $this->initiativePHIDs = $phids; - return $this; - } - - public function withBackerPHIDs(array $phids) { - $this->backerPHIDs = $phids; - return $this; - } - - protected function loadPage() { - $table = new FundBacker(); - $conn_r = $table->establishConnection('r'); - - $rows = queryfx_all( - $conn_r, - 'SELECT * FROM %T %Q %Q %Q', - $table->getTableName(), - $this->buildWhereClause($conn_r), - $this->buildOrderClause($conn_r), - $this->buildLimitClause($conn_r)); - - return $table->loadAllFromArray($rows); - } - - protected function willFilterPage(array $backers) { - $initiative_phids = mpull($backers, 'getInitiativePHID'); - $initiatives = id(new PhabricatorObjectQuery()) - ->setParentQuery($this) - ->setViewer($this->getViewer()) - ->withPHIDs($initiative_phids) - ->execute(); - $initiatives = mpull($initiatives, null, 'getPHID'); - - foreach ($backers as $backer) { - $initiative_phid = $backer->getInitiativePHID(); - $initiative = idx($initiatives, $initiative_phid); - $backer->attachInitiative($initiative); - } - - return $backers; - } - - protected function buildWhereClause(AphrontDatabaseConnection $conn) { - $where = array(); - - $where[] = $this->buildPagingClause($conn); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'phid IN (%Ls)', - $this->phids); - } - - if ($this->initiativePHIDs !== null) { - $where[] = qsprintf( - $conn, - 'initiativePHID IN (%Ls)', - $this->initiativePHIDs); - } - - if ($this->backerPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'backerPHID IN (%Ls)', - $this->backerPHIDs); - } - - if ($this->statuses !== null) { - $where[] = qsprintf( - $conn, - 'status IN (%Ls)', - $this->statuses); - } - - return $this->formatWhereClause($conn, $where); - } - - public function getQueryApplicationClass() { - return 'PhabricatorFundApplication'; - } - -} diff --git a/src/applications/fund/query/FundBackerSearchEngine.php b/src/applications/fund/query/FundBackerSearchEngine.php deleted file mode 100644 --- a/src/applications/fund/query/FundBackerSearchEngine.php +++ /dev/null @@ -1,151 +0,0 @@ -initiative = $initiative; - return $this; - } - - public function getInitiative() { - return $this->initiative; - } - - public function getResultTypeDescription() { - return pht('Fund Backers'); - } - - public function getApplicationClassName() { - return 'PhabricatorFundApplication'; - } - - public function buildSavedQueryFromRequest(AphrontRequest $request) { - $saved = new PhabricatorSavedQuery(); - - $saved->setParameter( - 'backerPHIDs', - $this->readUsersFromRequest($request, 'backers')); - - return $saved; - } - - public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { - $query = id(new FundBackerQuery()); - - $query->withStatuses(array(FundBacker::STATUS_PURCHASED)); - - if ($this->getInitiative()) { - $query->withInitiativePHIDs( - array( - $this->getInitiative()->getPHID(), - )); - } - - $backer_phids = $saved->getParameter('backerPHIDs'); - if ($backer_phids) { - $query->withBackerPHIDs($backer_phids); - } - - return $query; - } - - public function buildSearchForm( - AphrontFormView $form, - PhabricatorSavedQuery $saved) { - - $backer_phids = $saved->getParameter('backerPHIDs', array()); - - $form - ->appendControl( - id(new AphrontFormTokenizerControl()) - ->setLabel(pht('Backers')) - ->setName('backers') - ->setDatasource(new PhabricatorPeopleDatasource()) - ->setValue($backer_phids)); - } - - protected function getURI($path) { - if ($this->getInitiative()) { - return '/fund/backers/'.$this->getInitiative()->getID().'/'.$path; - } else { - return '/fund/backers/'.$path; - } - } - - protected function getBuiltinQueryNames() { - $names = array(); - $names['all'] = pht('All Backers'); - - return $names; - } - - public function buildSavedQueryFromBuiltin($query_key) { - $query = $this->newSavedQuery(); - $query->setQueryKey($query_key); - - switch ($query_key) { - case 'all': - return $query; - } - - return parent::buildSavedQueryFromBuiltin($query_key); - } - - protected function getRequiredHandlePHIDsForResultList( - array $backers, - PhabricatorSavedQuery $query) { - - $phids = array(); - foreach ($backers as $backer) { - $phids[] = $backer->getBackerPHID(); - $phids[] = $backer->getInitiativePHID(); - } - - return $phids; - } - - protected function renderResultList( - array $backers, - PhabricatorSavedQuery $query, - array $handles) { - assert_instances_of($backers, 'FundBacker'); - - $viewer = $this->requireViewer(); - - $rows = array(); - foreach ($backers as $backer) { - $rows[] = array( - $handles[$backer->getInitiativePHID()]->renderLink(), - $handles[$backer->getBackerPHID()]->renderLink(), - $backer->getAmountAsCurrency()->formatForDisplay(), - phabricator_datetime($backer->getDateCreated(), $viewer), - ); - } - - $table = id(new AphrontTableView($rows)) - ->setNoDataString(pht('No backers found.')) - ->setHeaders( - array( - pht('Initiative'), - pht('Backer'), - pht('Amount'), - pht('Date'), - )) - ->setColumnClasses( - array( - null, - null, - 'wide right', - 'right', - )); - - $result = new PhabricatorApplicationSearchResultView(); - $result->setTable($table); - - return $result; - } - -} diff --git a/src/applications/fund/query/FundBackerTransactionQuery.php b/src/applications/fund/query/FundBackerTransactionQuery.php deleted file mode 100644 --- a/src/applications/fund/query/FundBackerTransactionQuery.php +++ /dev/null @@ -1,10 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withOwnerPHIDs(array $phids) { - $this->ownerPHIDs = $phids; - return $this; - } - - public function withStatuses(array $statuses) { - $this->statuses = $statuses; - return $this; - } - - public function newResultObject() { - return new FundInitiative(); - } - - protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) { - $where = parent::buildWhereClauseParts($conn); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'i.id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'i.phid IN (%Ls)', - $this->phids); - } - - if ($this->ownerPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'i.ownerPHID IN (%Ls)', - $this->ownerPHIDs); - } - - if ($this->statuses !== null) { - $where[] = qsprintf( - $conn, - 'i.status IN (%Ls)', - $this->statuses); - } - - return $where; - } - - public function getQueryApplicationClass() { - return 'PhabricatorFundApplication'; - } - - protected function getPrimaryTableAlias() { - return 'i'; - } - -} diff --git a/src/applications/fund/query/FundInitiativeSearchEngine.php b/src/applications/fund/query/FundInitiativeSearchEngine.php deleted file mode 100644 --- a/src/applications/fund/query/FundInitiativeSearchEngine.php +++ /dev/null @@ -1,154 +0,0 @@ -setKey('ownerPHIDs') - ->setAliases(array('owner', 'ownerPHID', 'owners')) - ->setLabel(pht('Owners')), - id(new PhabricatorSearchCheckboxesField()) - ->setKey('statuses') - ->setLabel(pht('Statuses')) - ->setOptions(FundInitiative::getStatusNameMap()), - ); - } - - protected function buildQueryFromParameters(array $map) { - $query = $this->newQuery(); - - if ($map['ownerPHIDs']) { - $query->withOwnerPHIDs($map['ownerPHIDs']); - } - - if ($map['statuses']) { - $query->withStatuses($map['statuses']); - } - - return $query; - } - - protected function getURI($path) { - return '/fund/'.$path; - } - - protected function getBuiltinQueryNames() { - $names = array(); - - $names['open'] = pht('Open Initiatives'); - if ($this->requireViewer()->isLoggedIn()) { - $names['owned'] = pht('Owned Initiatives'); - } - $names['all'] = pht('All Initiatives'); - - return $names; - } - - public function buildSavedQueryFromBuiltin($query_key) { - $query = $this->newSavedQuery(); - $query->setQueryKey($query_key); - - switch ($query_key) { - case 'all': - return $query; - case 'owned': - return $query->setParameter( - 'ownerPHIDs', - array( - $this->requireViewer()->getPHID(), - )); - case 'open': - return $query->setParameter( - 'statuses', - array( - FundInitiative::STATUS_OPEN, - )); - } - - return parent::buildSavedQueryFromBuiltin($query_key); - } - - protected function renderResultList( - array $initiatives, - PhabricatorSavedQuery $query, - array $handles) { - assert_instances_of($initiatives, 'FundInitiative'); - - $viewer = $this->requireViewer(); - - $load_phids = array(); - foreach ($initiatives as $initiative) { - $load_phids[] = $initiative->getOwnerPHID(); - } - - if ($initiatives) { - $edge_query = id(new PhabricatorEdgeQuery()) - ->withSourcePHIDs(mpull($initiatives, 'getPHID')) - ->withEdgeTypes( - array( - PhabricatorProjectObjectHasProjectEdgeType::EDGECONST, - )); - - $edge_query->execute(); - - foreach ($edge_query->getDestinationPHIDs() as $phid) { - $load_phids[] = $phid; - } - } - - $handles = $viewer->loadHandles($load_phids); - $handles = iterator_to_array($handles); - - $list = new PHUIObjectItemListView(); - foreach ($initiatives as $initiative) { - $owner_handle = $handles[$initiative->getOwnerPHID()]; - - $item = id(new PHUIObjectItemView()) - ->setObjectName($initiative->getMonogram()) - ->setHeader($initiative->getName()) - ->setHref('/'.$initiative->getMonogram()) - ->addByline(pht('Owner: %s', $owner_handle->renderLink())); - - if ($initiative->isClosed()) { - $item->setDisabled(true); - } - - $project_phids = $edge_query->getDestinationPHIDs( - array( - $initiative->getPHID(), - )); - - $project_handles = array_select_keys($handles, $project_phids); - if ($project_handles) { - $item->addAttribute( - id(new PHUIHandleTagListView()) - ->setLimit(4) - ->setSlim(true) - ->setHandles($project_handles)); - } - - $list->addItem($item); - } - - $result = new PhabricatorApplicationSearchResultView(); - $result->setObjectList($list); - $result->setNoDataString(pht('No initiatives found.')); - - return $result; - } - -} diff --git a/src/applications/fund/query/FundInitiativeTransactionQuery.php b/src/applications/fund/query/FundInitiativeTransactionQuery.php deleted file mode 100644 --- a/src/applications/fund/query/FundInitiativeTransactionQuery.php +++ /dev/null @@ -1,10 +0,0 @@ -getEngine()->getConfig('viewer'); - - return id(new FundInitiativeQuery()) - ->setViewer($viewer) - ->withIDs($ids) - ->execute(); - } - -} diff --git a/src/applications/fund/search/FundInitiativeFerretEngine.php b/src/applications/fund/search/FundInitiativeFerretEngine.php deleted file mode 100644 --- a/src/applications/fund/search/FundInitiativeFerretEngine.php +++ /dev/null @@ -1,18 +0,0 @@ -setDocumentTitle($initiative->getName()); - - $document->addRelationship( - PhabricatorSearchRelationship::RELATIONSHIP_AUTHOR, - $initiative->getOwnerPHID(), - PhabricatorPeopleUserPHIDType::TYPECONST, - $initiative->getDateCreated()); - - $document->addRelationship( - PhabricatorSearchRelationship::RELATIONSHIP_OWNER, - $initiative->getOwnerPHID(), - PhabricatorPeopleUserPHIDType::TYPECONST, - $initiative->getDateCreated()); - - $document->addRelationship( - $initiative->isClosed() - ? PhabricatorSearchRelationship::RELATIONSHIP_CLOSED - : PhabricatorSearchRelationship::RELATIONSHIP_OPEN, - $initiative->getPHID(), - FundInitiativePHIDType::TYPECONST, - PhabricatorTime::getNow()); - } -} diff --git a/src/applications/fund/storage/FundBacker.php b/src/applications/fund/storage/FundBacker.php deleted file mode 100644 --- a/src/applications/fund/storage/FundBacker.php +++ /dev/null @@ -1,120 +0,0 @@ -setBackerPHID($actor->getPHID()) - ->setStatus(self::STATUS_NEW); - } - - protected function getConfiguration() { - return array( - self::CONFIG_AUX_PHID => true, - self::CONFIG_SERIALIZATION => array( - 'properties' => self::SERIALIZATION_JSON, - ), - self::CONFIG_APPLICATION_SERIALIZERS => array( - 'amountAsCurrency' => new PhortuneCurrencySerializer(), - ), - self::CONFIG_COLUMN_SCHEMA => array( - 'status' => 'text32', - 'amountAsCurrency' => 'text64', - ), - self::CONFIG_KEY_SCHEMA => array( - 'key_initiative' => array( - 'columns' => array('initiativePHID'), - ), - 'key_backer' => array( - 'columns' => array('backerPHID'), - ), - ), - ) + parent::getConfiguration(); - } - - public function generatePHID() { - return PhabricatorPHID::generateNewPHID(FundBackerPHIDType::TYPECONST); - } - - public function getProperty($key, $default = null) { - return idx($this->properties, $key, $default); - } - - public function setProperty($key, $value) { - $this->properties[$key] = $value; - return $this; - } - - public function getInitiative() { - return $this->assertAttached($this->initiative); - } - - public function attachInitiative(FundInitiative $initiative = null) { - $this->initiative = $initiative; - return $this; - } - - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } - - public function getPolicy($capability) { - switch ($capability) { - case PhabricatorPolicyCapability::CAN_VIEW: - // If we have the initiative, use the initiative's policy. - // Otherwise, return NOONE. This allows the backer to continue seeing - // a backer even if they're no longer allowed to see the initiative. - - $initiative = $this->getInitiative(); - if ($initiative) { - return $initiative->getPolicy($capability); - } - return PhabricatorPolicies::POLICY_NOONE; - case PhabricatorPolicyCapability::CAN_EDIT: - return PhabricatorPolicies::POLICY_NOONE; - } - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - return ($viewer->getPHID() == $this->getBackerPHID()); - } - - public function describeAutomaticCapability($capability) { - return pht('A backer can always see what they have backed.'); - } - - -/* -( PhabricatorApplicationTransactionInterface )------------------------- */ - - - public function getApplicationTransactionEditor() { - return new FundBackerEditor(); - } - - public function getApplicationTransactionTemplate() { - return new FundBackerTransaction(); - } - -} diff --git a/src/applications/fund/storage/FundBackerTransaction.php b/src/applications/fund/storage/FundBackerTransaction.php deleted file mode 100644 --- a/src/applications/fund/storage/FundBackerTransaction.php +++ /dev/null @@ -1,18 +0,0 @@ - pht('Open'), - self::STATUS_CLOSED => pht('Closed'), - ); - } - - public static function initializeNewInitiative(PhabricatorUser $actor) { - $app = id(new PhabricatorApplicationQuery()) - ->setViewer($actor) - ->withClasses(array('PhabricatorFundApplication')) - ->executeOne(); - - $view_policy = $app->getPolicy(FundDefaultViewCapability::CAPABILITY); - - return id(new FundInitiative()) - ->setOwnerPHID($actor->getPHID()) - ->setViewPolicy($view_policy) - ->setEditPolicy($actor->getPHID()) - ->setStatus(self::STATUS_OPEN) - ->setTotalAsCurrency(PhortuneCurrency::newEmptyCurrency()); - } - - protected function getConfiguration() { - return array( - self::CONFIG_AUX_PHID => true, - self::CONFIG_COLUMN_SCHEMA => array( - 'name' => 'text255', - 'description' => 'text', - 'risks' => 'text', - 'status' => 'text32', - 'merchantPHID' => 'phid?', - 'totalAsCurrency' => 'text64', - ), - self::CONFIG_APPLICATION_SERIALIZERS => array( - 'totalAsCurrency' => new PhortuneCurrencySerializer(), - ), - self::CONFIG_KEY_SCHEMA => array( - 'key_status' => array( - 'columns' => array('status'), - ), - 'key_owner' => array( - 'columns' => array('ownerPHID'), - ), - ), - ) + parent::getConfiguration(); - } - - public function getPHIDType() { - return FundInitiativePHIDType::TYPECONST; - } - - public function getMonogram() { - return 'I'.$this->getID(); - } - - public function getViewURI() { - return '/'.$this->getMonogram(); - } - - public function getProjectPHIDs() { - return $this->assertAttached($this->projectPHIDs); - } - - public function attachProjectPHIDs(array $phids) { - $this->projectPHIDs = $phids; - return $this; - } - - public function isClosed() { - return ($this->getStatus() == self::STATUS_CLOSED); - } - - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } - - public function getPolicy($capability) { - switch ($capability) { - case PhabricatorPolicyCapability::CAN_VIEW: - return $this->getViewPolicy(); - case PhabricatorPolicyCapability::CAN_EDIT: - return $this->getEditPolicy(); - } - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - if ($viewer->getPHID() == $this->getOwnerPHID()) { - return true; - } - - if ($capability == PhabricatorPolicyCapability::CAN_VIEW) { - $can_merchant = PhortuneMerchantQuery::canViewersEditMerchants( - array($viewer->getPHID()), - array($this->getMerchantPHID())); - - if ($can_merchant) { - return true; - } - } - - return false; - } - - public function describeAutomaticCapability($capability) { - return pht('The owner of an initiative can always view and edit it.'); - } - - -/* -( PhabricatorApplicationTransactionInterface )------------------------- */ - - - public function getApplicationTransactionEditor() { - return new FundInitiativeEditor(); - } - - public function getApplicationTransactionTemplate() { - return new FundInitiativeTransaction(); - } - - -/* -( PhabricatorSubscribableInterface )----------------------------------- */ - - - public function isAutomaticallySubscribed($phid) { - return ($phid == $this->getOwnerPHID()); - } - - -/* -( PhabricatorTokenRecevierInterface )---------------------------------- */ - - - public function getUsersToNotifyOfTokenGiven() { - return array( - $this->getOwnerPHID(), - ); - } - - -/* -( PhabricatorDestructibleInterface )----------------------------------- */ - - - public function destroyObjectPermanently( - PhabricatorDestructionEngine $engine) { - - $this->openTransaction(); - $this->delete(); - $this->saveTransaction(); - } - - -/* -( PhabricatorFulltextInterface )--------------------------------------- */ - - - public function newFulltextEngine() { - return new FundInitiativeFulltextEngine(); - } - - -/* -( PhabricatorFerretInterface )----------------------------------------- */ - - - public function newFerretEngine() { - return new FundInitiativeFerretEngine(); - } - -} diff --git a/src/applications/fund/storage/FundInitiativeTransaction.php b/src/applications/fund/storage/FundInitiativeTransaction.php deleted file mode 100644 --- a/src/applications/fund/storage/FundInitiativeTransaction.php +++ /dev/null @@ -1,54 +0,0 @@ -getTransactionType()) { - case FundInitiativeStatusTransaction::TRANSACTIONTYPE: - $tags[] = self::MAILTAG_STATUS; - break; - case FundInitiativeBackerTransaction::TRANSACTIONTYPE: - case FundInitiativeRefundTransaction::TRANSACTIONTYPE: - $tags[] = self::MAILTAG_BACKER; - break; - default: - $tags[] = self::MAILTAG_OTHER; - break; - } - - return $tags; - } - -} diff --git a/src/applications/fund/storage/FundInitiativeTransactionComment.php b/src/applications/fund/storage/FundInitiativeTransactionComment.php deleted file mode 100644 --- a/src/applications/fund/storage/FundInitiativeTransactionComment.php +++ /dev/null @@ -1,10 +0,0 @@ -buildEdgeSchemata(new FundInitiative()); - } - -} diff --git a/src/applications/fund/xaction/FundBackerRefundTransaction.php b/src/applications/fund/xaction/FundBackerRefundTransaction.php deleted file mode 100644 --- a/src/applications/fund/xaction/FundBackerRefundTransaction.php +++ /dev/null @@ -1,13 +0,0 @@ -getStatus(); - } - - public function applyInternalEffects($object, $value) { - $object->setStatus($value); - } - - -} diff --git a/src/applications/fund/xaction/FundBackerTransactionType.php b/src/applications/fund/xaction/FundBackerTransactionType.php deleted file mode 100644 --- a/src/applications/fund/xaction/FundBackerTransactionType.php +++ /dev/null @@ -1,4 +0,0 @@ -getMetadataValue( - FundInitiativeTransaction::PROPERTY_AMOUNT); - $amount = PhortuneCurrency::newFromString($amount); - $total = $object->getTotalAsCurrency()->add($amount); - $object->setTotalAsCurrency($total); - } - - public function applyExternalEffects($object, $value) { - $backer = id(new FundBackerQuery()) - ->setViewer($this->getActor()) - ->withPHIDs(array($value)) - ->executeOne(); - if (!$backer) { - throw new Exception(pht('Unable to load %s!', 'FundBacker')); - } - - $subx = array(); - $subx[] = id(new FundBackerTransaction()) - ->setTransactionType(FundBackerStatusTransaction::TRANSACTIONTYPE) - ->setNewValue(FundBacker::STATUS_PURCHASED); - - $content_source = $this->getEditor()->getContentSource(); - - $editor = id(new FundBackerEditor()) - ->setActor($this->getActor()) - ->setContentSource($content_source) - ->setContinueOnMissingFields(true) - ->setContinueOnNoEffect(true); - - $editor->applyTransactions($backer, $subx); - } - - public function getTitle() { - $amount = $this->getMetadataValue( - FundInitiativeTransaction::PROPERTY_AMOUNT); - $amount = PhortuneCurrency::newFromString($amount); - return pht( - '%s backed this initiative with %s.', - $this->renderAuthor(), - $amount->formatForDisplay()); - } - - public function getTitleForFeed() { - $amount = $this->getMetadataValue( - FundInitiativeTransaction::PROPERTY_AMOUNT); - $amount = PhortuneCurrency::newFromString($amount); - return pht( - '%s backed %s with %s.', - $this->renderAuthor(), - $this->renderObject(), - $amount->formatForDisplay()); - } - - public function getIcon() { - return 'fa-heart'; - } - - public function getColor() { - return 'red'; - } - - -} diff --git a/src/applications/fund/xaction/FundInitiativeDescriptionTransaction.php b/src/applications/fund/xaction/FundInitiativeDescriptionTransaction.php deleted file mode 100644 --- a/src/applications/fund/xaction/FundInitiativeDescriptionTransaction.php +++ /dev/null @@ -1,75 +0,0 @@ -getDescription(); - } - - public function applyInternalEffects($object, $value) { - $object->setDescription($value); - } - - public function shouldHide() { - $old = $this->getOldValue(); - $new = $this->getNewValue(); - if (!strlen($old) && !strlen($new)) { - return true; - } - return false; - } - - public function getTitle() { - $old = $this->getOldValue(); - $new = $this->getNewValue(); - - if ($old === null) { - return pht( - '%s set the initiative description.', - $this->renderAuthor()); - } else { - return pht( - '%s updated the initiative description.', - $this->renderAuthor()); - } - } - - public function getTitleForFeed() { - return pht( - '%s updated the initiative description for %s.', - $this->renderAuthor(), - $this->renderObject()); - } - - public function hasChangeDetailView() { - return true; - } - - public function getMailDiffSectionHeader() { - return pht('CHANGES TO INITIATIVE DESCRIPTION'); - } - - public function newChangeDetailView() { - $viewer = $this->getViewer(); - - return id(new PhabricatorApplicationTransactionTextDiffDetailView()) - ->setViewer($viewer) - ->setOldText($this->getOldValue()) - ->setNewText($this->getNewValue()); - } - - public function newRemarkupChanges() { - $changes = array(); - - $changes[] = $this->newRemarkupChange() - ->setOldValue($this->getOldValue()) - ->setNewValue($this->getNewValue()); - - return $changes; - } - - -} diff --git a/src/applications/fund/xaction/FundInitiativeMerchantTransaction.php b/src/applications/fund/xaction/FundInitiativeMerchantTransaction.php deleted file mode 100644 --- a/src/applications/fund/xaction/FundInitiativeMerchantTransaction.php +++ /dev/null @@ -1,93 +0,0 @@ -getMerchantPHID(); - } - - public function applyInternalEffects($object, $value) { - $object->setMerchantPHID($value); - } - - public function getTitle() { - $new = $this->getNewValue(); - $new_merchant = $this->renderHandleList(array($new)); - - $old = $this->getOldValue(); - $old_merchant = $this->renderHandleList(array($old)); - - if ($old) { - return pht( - '%s changed the merchant receiving funds from this '. - 'initiative from %s to %s.', - $this->renderAuthor(), - $old_merchant, - $new_merchant); - } else { - return pht( - '%s set the merchant receiving funds from this '. - 'initiative to %s.', - $this->renderAuthor(), - $new_merchant); - } - } - - public function getTitleForFeed() { - $new = $this->getNewValue(); - $new_merchant = $this->renderHandleList(array($new)); - - $old = $this->getOldValue(); - $old_merchant = $this->renderHandleList(array($old)); - - return pht( - '%s changed the merchant receiving funds from %s '. - 'from %s to %s.', - $this->renderAuthor(), - $this->renderObject(), - $old_merchant, - $new_merchant); - } - - public function validateTransactions($object, array $xactions) { - $errors = array(); - - if ($this->isEmptyTextTransaction($object->getMerchantPHID(), $xactions)) { - $errors[] = $this->newRequiredError( - pht('Initiatives must have a payable merchant.')); - } - - foreach ($xactions as $xaction) { - $merchant_phid = $xaction->getNewValue(); - - // Make sure the actor has permission to edit the merchant they're - // selecting. You aren't allowed to send payments to an account you - // do not control. - $merchants = id(new PhortuneMerchantQuery()) - ->setViewer($this->getActor()) - ->withPHIDs(array($merchant_phid)) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->execute(); - if (!$merchants) { - $errors[] = $this->newInvalidError( - pht('You must specify a merchant account you control as the '. - 'recipient of funds from this initiative.')); - } - } - - return $errors; - } - - public function getIcon() { - return 'fa-bank'; - } - - -} diff --git a/src/applications/fund/xaction/FundInitiativeNameTransaction.php b/src/applications/fund/xaction/FundInitiativeNameTransaction.php deleted file mode 100644 --- a/src/applications/fund/xaction/FundInitiativeNameTransaction.php +++ /dev/null @@ -1,71 +0,0 @@ -getName(); - } - - public function applyInternalEffects($object, $value) { - $object->setName($value); - } - - public function getTitle() { - $old = $this->getOldValue(); - if (!strlen($old)) { - return pht( - '%s created this initiative.', - $this->renderAuthor()); - } else { - return pht( - '%s renamed this initiative from %s to %s.', - $this->renderAuthor(), - $this->renderOldValue(), - $this->renderNewValue()); - } - } - - public function getTitleForFeed() { - $old = $this->getOldValue(); - if (!strlen($old)) { - return pht( - '%s created initiative %s.', - $this->renderAuthor(), - $this->renderObject()); - } else { - return pht( - '%s renamed %s from %s to %s.', - $this->renderAuthor(), - $this->renderObject(), - $this->renderOldValue(), - $this->renderNewValue()); - } - } - - public function validateTransactions($object, array $xactions) { - $errors = array(); - - if ($this->isEmptyTextTransaction($object->getName(), $xactions)) { - $errors[] = $this->newRequiredError( - pht('Initiatives must have a name.')); - } - - $max_length = $object->getColumnMaximumByteLength('name'); - foreach ($xactions as $xaction) { - $new_value = $xaction->getNewValue(); - $new_length = strlen($new_value); - if ($new_length > $max_length) { - $errors[] = $this->newInvalidError( - pht('The name can be no longer than %s characters.', - new PhutilNumber($max_length))); - } - } - - return $errors; - } - - -} diff --git a/src/applications/fund/xaction/FundInitiativeRefundTransaction.php b/src/applications/fund/xaction/FundInitiativeRefundTransaction.php deleted file mode 100644 --- a/src/applications/fund/xaction/FundInitiativeRefundTransaction.php +++ /dev/null @@ -1,77 +0,0 @@ -getMetadataValue( - FundInitiativeTransaction::PROPERTY_AMOUNT); - $amount = PhortuneCurrency::newFromString($amount); - $total = $object->getTotalAsCurrency()->subtract($amount); - $object->setTotalAsCurrency($total); - } - - public function applyExternalEffects($object, $value) { - $backer = id(new FundBackerQuery()) - ->setViewer($this->getActor()) - ->withPHIDs(array($value)) - ->executeOne(); - if (!$backer) { - throw new Exception(pht('Unable to load %s!', 'FundBacker')); - } - - $subx = array(); - $amount = $this->getMetadataValue( - FundInitiativeTransaction::PROPERTY_AMOUNT); - $subx[] = id(new FundBackerTransaction()) - ->setTransactionType(FundBackerStatusTransaction::TRANSACTIONTYPE) - ->setNewValue($amount); - - $content_source = $this->getEditor()->getContentSource(); - - $editor = id(new FundBackerEditor()) - ->setActor($this->getActor()) - ->setContentSource($content_source) - ->setContinueOnMissingFields(true) - ->setContinueOnNoEffect(true); - - $editor->applyTransactions($backer, $subx); - } - - public function getTitle() { - $amount = $this->getMetadataValue( - FundInitiativeTransaction::PROPERTY_AMOUNT); - $amount = PhortuneCurrency::newFromString($amount); - $backer_phid = $this->getMetadataValue( - FundInitiativeTransaction::PROPERTY_BACKER); - - return pht( - '%s refunded %s to %s.', - $this->renderAuthor(), - $amount->formatForDisplay(), - $this->renderHandle($backer_phid)); - } - - public function getTitleForFeed() { - $amount = $this->getMetadataValue( - FundInitiativeTransaction::PROPERTY_AMOUNT); - $amount = PhortuneCurrency::newFromString($amount); - $backer_phid = $this->getMetadataValue( - FundInitiativeTransaction::PROPERTY_BACKER); - - return pht( - '%s refunded %s to %s for %s.', - $this->renderAuthor(), - $amount->formatForDisplay(), - $this->renderHandle($backer_phid), - $this->renderObject()); - } - - -} diff --git a/src/applications/fund/xaction/FundInitiativeRisksTransaction.php b/src/applications/fund/xaction/FundInitiativeRisksTransaction.php deleted file mode 100644 --- a/src/applications/fund/xaction/FundInitiativeRisksTransaction.php +++ /dev/null @@ -1,80 +0,0 @@ -getRisks(); - } - - public function applyInternalEffects($object, $value) { - $object->setRisks($value); - } - - public function shouldHide() { - $old = $this->getOldValue(); - $new = $this->getNewValue(); - if (!strlen($old) && !strlen($new)) { - return true; - } - return false; - } - - public function getTitle() { - $old = $this->getOldValue(); - $new = $this->getNewValue(); - - if ($old === null) { - return pht( - '%s set the initiative risks/challenges.', - $this->renderAuthor()); - } else { - return pht( - '%s updated the initiative risks/challenges.', - $this->renderAuthor()); - } - - } - - public function getTitleForFeed() { - return pht( - '%s updated the initiative risks/challenges for %s.', - $this->renderAuthor(), - $this->renderObject()); - } - - public function hasChangeDetailView() { - return true; - } - - public function getMailDiffSectionHeader() { - return pht('CHANGES TO INITIATIVE RISKS/CHALLENGES'); - } - - public function newChangeDetailView() { - $viewer = $this->getViewer(); - - return id(new PhabricatorApplicationTransactionTextDiffDetailView()) - ->setViewer($viewer) - ->setOldText($this->getOldValue()) - ->setNewText($this->getNewValue()); - } - - public function newRemarkupChanges() { - $changes = array(); - - $changes[] = $this->newRemarkupChange() - ->setOldValue($this->getOldValue()) - ->setNewValue($this->getNewValue()); - - return $changes; - } - - public function getIcon() { - return 'fa-ambulance'; - } - - -} diff --git a/src/applications/fund/xaction/FundInitiativeStatusTransaction.php b/src/applications/fund/xaction/FundInitiativeStatusTransaction.php deleted file mode 100644 --- a/src/applications/fund/xaction/FundInitiativeStatusTransaction.php +++ /dev/null @@ -1,51 +0,0 @@ -getStatus(); - } - - public function applyInternalEffects($object, $value) { - $object->setStatus($value); - } - - public function getTitle() { - if ($this->getNewValue() == FundInitiative::STATUS_CLOSED) { - return pht( - '%s closed this initiative.', - $this->renderAuthor()); - } else { - return pht( - '%s reopened this initiative.', - $this->renderAuthor()); - } - } - - public function getTitleForFeed() { - if ($this->getNewValue() == FundInitiative::STATUS_CLOSED) { - return pht( - '%s closed %s.', - $this->renderAuthor(), - $this->renderObject()); - } else { - return pht( - '%s reopened %s.', - $this->renderAuthor(), - $this->renderObject()); - } - } - - public function getIcon() { - if ($this->getNewValue() == FundInitiative::STATUS_CLOSED) { - return 'fa-ban'; - } else { - return 'fa-check'; - } - } - - -} diff --git a/src/applications/fund/xaction/FundInitiativeTransactionType.php b/src/applications/fund/xaction/FundInitiativeTransactionType.php deleted file mode 100644 --- a/src/applications/fund/xaction/FundInitiativeTransactionType.php +++ /dev/null @@ -1,4 +0,0 @@ - true, - ); - } - - public function testNewPhortuneAccount() { - $user = $this->generateNewTestUser(); - $content_source = $this->newContentSource(); - - $accounts = PhortuneAccountQuery::loadAccountsForUser( - $user, - $content_source); - - $this->assertEqual( - 1, - count($accounts), - pht('Creation of default account for users with no accounts.')); - - // Reload the account. The user should be able to view and edit it, and - // should be a member. - - $account = head($accounts); - $account = id(new PhortuneAccountQuery()) - ->setViewer($user) - ->withPHIDs(array($account->getPHID())) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - - $this->assertEqual(true, ($account instanceof PhortuneAccount)); - $this->assertEqual(array($user->getPHID()), $account->getMemberPHIDs()); - } - -} diff --git a/src/applications/phortune/action/PhortuneAddPaymentMethodAction.php b/src/applications/phortune/action/PhortuneAddPaymentMethodAction.php deleted file mode 100644 --- a/src/applications/phortune/action/PhortuneAddPaymentMethodAction.php +++ /dev/null @@ -1,18 +0,0 @@ - array( - '' => 'PhortuneLandingController', - 'card/(?P\d+)/' => array( - 'edit/' => 'PhortunePaymentMethodEditController', - 'disable/' => 'PhortunePaymentMethodDisableController', - ), - 'cart/(?P\d+)/' => array( - '' => 'PhortuneCartViewController', - 'checkout/' => 'PhortuneCartCheckoutController', - '(?Pprint)/' => 'PhortuneCartViewController', - '(?Pcancel|refund)/' => 'PhortuneCartCancelController', - 'accept/' => 'PhortuneCartAcceptController', - 'void/' => 'PhortuneCartVoidController', - 'update/' => 'PhortuneCartUpdateController', - ), - 'account/' => array( - '' => 'PhortuneAccountListController', - - $this->getEditRoutePattern('edit/') - => 'PhortuneAccountEditController', - - '(?P\d+)/' => array( - '' => 'PhortuneAccountOverviewController', - 'details/' => 'PhortuneAccountDetailsController', - 'methods/' => array( - '' => 'PhortuneAccountPaymentMethodController', - '(?P\d+)/' => 'PhortuneAccountPaymentMethodViewController', - 'new/' => 'PhortunePaymentMethodCreateController', - ), - 'orders/' => array( - '' => 'PhortuneAccountOrdersController', - $this->getQueryRoutePattern('list/') - => 'PhortuneAccountOrderListController', - ), - 'charges/' => array( - '' => 'PhortuneAccountChargesController', - $this->getQueryRoutePattern('list/') - => 'PhortuneAccountChargeListController', - ), - 'subscriptions/' => array( - '' => 'PhortuneAccountSubscriptionController', - '(?P\d+)/' => array( - '' => 'PhortuneAccountSubscriptionViewController', - 'autopay/(?P\d+)/' - => 'PhortuneAccountSubscriptionAutopayController', - $this->getQueryRoutePattern('orders/') - => 'PhortuneAccountOrderListController', - ), - ), - 'managers/' => array( - '' => 'PhortuneAccountManagersController', - 'add/' => 'PhortuneAccountAddManagerController', - ), - 'addresses/' => array( - '' => 'PhortuneAccountEmailAddressesController', - '(?P\d+)/' => array( - '' => 'PhortuneAccountEmailViewController', - 'rotate/' => 'PhortuneAccountEmailRotateController', - '(?Pdisable|enable)/' - => 'PhortuneAccountEmailStatusController', - ), - $this->getEditRoutePattern('edit/') - => 'PhortuneAccountEmailEditController', - ), - ), - ), - 'product/' => array( - '' => 'PhortuneProductListController', - 'view/(?P\d+)/' => 'PhortuneProductViewController', - ), - 'provider/' => array( - '(?P\d+)/(?P[^/]+)/' - => 'PhortuneProviderActionController', - ), - 'external/(?P[^/]+)/(?P[^/]+)/' => array( - '' => 'PhortuneExternalOverviewController', - 'unsubscribe/' => 'PhortuneExternalUnsubscribeController', - 'order/' => array( - '(?P[^/]+)/' => array( - '' => 'PhortuneExternalOrderController', - '(?Pprint)/' => 'PhortuneExternalOrderController', - ), - ), - ), - 'merchant/' => array( - $this->getQueryRoutePattern() - => 'PhortuneMerchantListController', - $this->getEditRoutePattern('edit/') - => 'PhortuneMerchantEditController', - '(?P\d+)/' => array( - '' => 'PhortuneMerchantOverviewController', - 'details/' => 'PhortuneMerchantDetailsController', - 'providers/' => array( - '' => 'PhortuneMerchantProvidersController', - '(?P\d+)/' => array( - '' => 'PhortuneMerchantProviderViewController', - 'disable/' => 'PhortuneMerchantProviderDisableController', - ), - $this->getEditRoutePattern('edit/') - => 'PhortuneMerchantProviderEditController', - ), - 'orders/' => array( - '' => 'PhortuneMerchantOrdersController', - $this->getQueryRoutePattern('list/') - => 'PhortuneMerchantOrderListController', - ), - 'picture/' => array( - 'edit/' => 'PhortuneMerchantPictureController', - ), - 'subscriptions/' => array( - '' => 'PhortuneMerchantSubscriptionsController', - $this->getQueryRoutePattern('list/') - => 'PhortuneMerchantSubscriptionListController', - ), - 'managers/' => array( - '' => 'PhortuneMerchantManagersController', - 'new/' => 'PhortuneMerchantAddManagerController', - ), - ), - ), - ), - ); - } - - protected function getCustomCapabilities() { - return array( - PhortuneMerchantCapability::CAPABILITY => array( - 'caption' => pht('Merchant accounts can receive payments.'), - 'default' => PhabricatorPolicies::POLICY_ADMIN, - ), - ); - } - -} diff --git a/src/applications/phortune/capability/PhortuneMerchantCapability.php b/src/applications/phortune/capability/PhortuneMerchantCapability.php deleted file mode 100644 --- a/src/applications/phortune/capability/PhortuneMerchantCapability.php +++ /dev/null @@ -1,17 +0,0 @@ - $cart) { - $results[$key] = new PhortuneAdHocCart(); - } - - return $results; - } - - public function getName(PhortuneCart $cart) { - return $cart->getMetadataValue('adhoc.title'); - } - - public function getDescription(PhortuneCart $cart) { - return $cart->getMetadataValue('adhoc.description'); - } - - public function getCancelURI(PhortuneCart $cart) { - return null; - } - - public function getDoneURI(PhortuneCart $cart) { - return null; - } - - public function willCreateCart( - PhabricatorUser $viewer, - PhortuneCart $cart) { - return; - } - -} diff --git a/src/applications/phortune/cart/PhortuneCartImplementation.php b/src/applications/phortune/cart/PhortuneCartImplementation.php deleted file mode 100644 --- a/src/applications/phortune/cart/PhortuneCartImplementation.php +++ /dev/null @@ -1,46 +0,0 @@ -getStatus()) { - case PhortuneCart::STATUS_PURCHASED: - throw new Exception( - pht( - 'This order can not be cancelled because it has already been '. - 'completed.')); - break; - } - } - - public function assertCanRefundOrder(PhortuneCart $cart) { - return; - } - - abstract public function willCreateCart( - PhabricatorUser $viewer, - PhortuneCart $cart); - -} diff --git a/src/applications/phortune/cart/PhortuneSubscriptionCart.php b/src/applications/phortune/cart/PhortuneSubscriptionCart.php deleted file mode 100644 --- a/src/applications/phortune/cart/PhortuneSubscriptionCart.php +++ /dev/null @@ -1,88 +0,0 @@ -subscriptionPHID = $subscription_phid; - return $this; - } - - public function getSubscriptionPHID() { - return $this->subscriptionPHID; - } - - public function setSubscription(PhortuneSubscription $subscription) { - $this->subscription = $subscription; - return $this; - } - - public function getSubscription() { - return $this->subscription; - } - - public function getName(PhortuneCart $cart) { - return $this->getSubscription()->getCartName($cart); - } - - public function willCreateCart( - PhabricatorUser $viewer, - PhortuneCart $cart) { - - $subscription = $this->getSubscription(); - if (!$subscription) { - throw new PhutilInvalidStateException('setSubscription'); - } - - $cart->setMetadataValue('subscriptionPHID', $subscription->getPHID()); - } - - public function loadImplementationsForCarts( - PhabricatorUser $viewer, - array $carts) { - - $phids = array(); - foreach ($carts as $cart) { - $phids[] = $cart->getMetadataValue('subscriptionPHID'); - } - - $subscriptions = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withPHIDs($phids) - ->execute(); - $subscriptions = mpull($subscriptions, null, 'getPHID'); - - $objects = array(); - foreach ($carts as $key => $cart) { - $subscription_phid = $cart->getMetadataValue('subscriptionPHID'); - $subscription = idx($subscriptions, $subscription_phid); - if (!$subscription) { - continue; - } - - $object = id(new PhortuneSubscriptionCart()) - ->setSubscriptionPHID($subscription_phid) - ->setSubscription($subscription); - - $objects[$key] = $object; - } - - return $objects; - } - - public function getCancelURI(PhortuneCart $cart) { - return $this->getSubscription()->getURI(); - } - - public function getDoneURI(PhortuneCart $cart) { - return $this->getSubscription()->getURI(); - } - - public function getDoneActionName(PhortuneCart $cart) { - return pht('Return to Subscription'); - } - -} diff --git a/src/applications/phortune/codex/PhortunePaymentMethodPolicyCodex.php b/src/applications/phortune/codex/PhortunePaymentMethodPolicyCodex.php deleted file mode 100644 --- a/src/applications/phortune/codex/PhortunePaymentMethodPolicyCodex.php +++ /dev/null @@ -1,36 +0,0 @@ -getObject(); - - $rules = array(); - - $rules[] = $this->newRule() - ->setCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->setIsActive(true) - ->setDescription( - pht( - 'Account members may view and edit payment methods.')); - - $rules[] = $this->newRule() - ->setCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - )) - ->setIsActive(true) - ->setDescription( - pht( - 'Merchants you have a relationship with may view associated '. - 'payment methods.')); - - return $rules; - } - -} diff --git a/src/applications/phortune/codex/PhortuneSubscriptionPolicyCodex.php b/src/applications/phortune/codex/PhortuneSubscriptionPolicyCodex.php deleted file mode 100644 --- a/src/applications/phortune/codex/PhortuneSubscriptionPolicyCodex.php +++ /dev/null @@ -1,36 +0,0 @@ -getObject(); - - $rules = array(); - - $rules[] = $this->newRule() - ->setCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->setIsActive(true) - ->setDescription( - pht( - 'Account members may view and edit subscriptions.')); - - $rules[] = $this->newRule() - ->setCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - )) - ->setIsActive(true) - ->setDescription( - pht( - 'Merchants you have a relationship with may view associated '. - 'subscriptions.')); - - return $rules; - } - -} diff --git a/src/applications/phortune/constants/PhortuneAccountEmailStatus.php b/src/applications/phortune/constants/PhortuneAccountEmailStatus.php deleted file mode 100644 --- a/src/applications/phortune/constants/PhortuneAccountEmailStatus.php +++ /dev/null @@ -1,31 +0,0 @@ - array( - 'name' => pht('Active'), - 'closed' => false, - ), - self::STATUS_DISABLED => array( - 'name' => pht('Disabled'), - 'closed' => true, - ), - self::STATUS_UNSUBSCRIBED => array( - 'name' => pht('Unsubscribed'), - 'closed' => true, - ), - ); - } - -} diff --git a/src/applications/phortune/constants/PhortuneConstants.php b/src/applications/phortune/constants/PhortuneConstants.php deleted file mode 100644 --- a/src/applications/phortune/constants/PhortuneConstants.php +++ /dev/null @@ -1,3 +0,0 @@ -monthValue = $value; - return $this; - } - private function getMonthInputValue() { - return $this->monthValue; - } - private function getCurrentMonth() { - return phabricator_format_local_time( - time(), - $this->getUser(), - 'm'); - } - - public function setYearInputValue($value) { - $this->yearValue = $value; - return $this; - } - private function getYearInputValue() { - return $this->yearValue; - } - private function getCurrentYear() { - return phabricator_format_local_time( - time(), - $this->getUser(), - 'Y'); - } - - protected function getCustomControlClass() { - return 'aphront-form-control-text'; - } - - protected function renderInput() { - if (!$this->getUser()) { - throw new PhutilInvalidStateException('setUser'); - } - - // represent months like a credit card does - $months = array( - '01' => '01', - '02' => '02', - '03' => '03', - '04' => '04', - '05' => '05', - '06' => '06', - '07' => '07', - '08' => '08', - '09' => '09', - '10' => '10', - '11' => '11', - '12' => '12', - ); - - $current_year = $this->getCurrentYear(); - $years = range($current_year, $current_year + 20); - $years = array_fuse($years); - - if ($this->getMonthInputValue()) { - $selected_month = $this->getMonthInputValue(); - } else { - $selected_month = $this->getCurrentMonth(); - } - $months_sel = AphrontFormSelectControl::renderSelectTag( - $selected_month, - $months, - array( - 'sigil' => 'month-input', - )); - - $years_sel = AphrontFormSelectControl::renderSelectTag( - $this->getYearInputValue(), - $years, - array( - 'sigil' => 'year-input', - )); - - return hsprintf('%s%s', $months_sel, $years_sel); - } - -} diff --git a/src/applications/phortune/controller/PhortuneController.php b/src/applications/phortune/controller/PhortuneController.php deleted file mode 100644 --- a/src/applications/phortune/controller/PhortuneController.php +++ /dev/null @@ -1,51 +0,0 @@ -getRequest()->getUser(); - - $provider_configs = id(new PhortunePaymentProviderConfigQuery()) - ->setViewer($viewer) - ->withMerchantPHIDs(array($merchant->getPHID())) - ->execute(); - $providers = mpull($provider_configs, 'buildProvider', 'getID'); - - foreach ($providers as $key => $provider) { - if (!$provider->isEnabled()) { - unset($providers[$key]); - } - } - - return $providers; - } - - protected function loadCreatePaymentMethodProvidersForMerchant( - PhortuneMerchant $merchant) { - - $providers = $this->loadEnabledProvidersForMerchant($merchant); - foreach ($providers as $key => $provider) { - if (!$provider->canCreatePaymentMethods()) { - unset($providers[$key]); - continue; - } - } - - return $providers; - } - - protected function loadOneTimePaymentProvidersForMerchant( - PhortuneMerchant $merchant) { - - $providers = $this->loadEnabledProvidersForMerchant($merchant); - foreach ($providers as $key => $provider) { - if (!$provider->canProcessOneTimePayments()) { - unset($providers[$key]); - continue; - } - } - - return $providers; - } - -} diff --git a/src/applications/phortune/controller/PhortuneLandingController.php b/src/applications/phortune/controller/PhortuneLandingController.php deleted file mode 100644 --- a/src/applications/phortune/controller/PhortuneLandingController.php +++ /dev/null @@ -1,22 +0,0 @@ -getViewer(); - - $accounts = PhortuneAccountQuery::loadAccountsForUser( - $viewer, - PhabricatorContentSource::newFromRequest($request)); - - if (count($accounts) == 1) { - $account = head($accounts); - $next_uri = $account->getURI(); - } else { - $next_uri = $this->getApplicationURI('account/'); - } - - return id(new AphrontRedirectResponse())->setURI($next_uri); - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountAddManagerController.php b/src/applications/phortune/controller/account/PhortuneAccountAddManagerController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountAddManagerController.php +++ /dev/null @@ -1,80 +0,0 @@ -getViewer(); - $account = $this->getAccount(); - - $id = $account->getID(); - - $v_managers = array(); - $e_managers = null; - $account_uri = $this->getApplicationURI("/account/{$id}/managers/"); - - if ($request->isFormPost()) { - $xactions = array(); - $v_managers = $request->getArr('managerPHIDs'); - $type_edge = PhabricatorTransactions::TYPE_EDGE; - - $xactions[] = id(new PhortuneAccountTransaction()) - ->setTransactionType($type_edge) - ->setMetadataValue( - 'edge:type', - PhortuneAccountHasMemberEdgeType::EDGECONST) - ->setNewValue( - array( - '+' => array_fuse($v_managers), - )); - - $editor = id(new PhortuneAccountEditor()) - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnNoEffect(true); - - try { - $editor->applyTransactions($account, $xactions); - - return id(new AphrontRedirectResponse())->setURI($account_uri); - } catch (PhabricatorApplicationTransactionValidationException $ex) { - $validation_exception = $ex; - $e_managers = $ex->getShortMessage($type_edge); - } - } - - $account_phid = $account->getPHID(); - $handles = $viewer->loadHandles(array($account_phid)); - $handle = $handles[$account_phid]; - - $form = id(new AphrontFormView()) - ->setViewer($viewer) - ->appendInstructions( - pht( - 'Choose one or more users to add as account managers. Managers '. - 'have full control of the account.')) - ->appendControl( - id(new AphrontFormStaticControl()) - ->setLabel(pht('Payment Account')) - ->setValue($handle->renderLink())) - ->appendControl( - id(new AphrontFormTokenizerControl()) - ->setDatasource(new PhabricatorPeopleDatasource()) - ->setLabel(pht('Add Managers')) - ->setName('managerPHIDs') - ->setValue($v_managers) - ->setError($e_managers)); - - return $this->newDialog() - ->setTitle(pht('Add New Managers')) - ->appendForm($form) - ->setWidth(AphrontDialogView::WIDTH_FORM) - ->addCancelButton($account_uri) - ->addSubmitButton(pht('Add Managers')); - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountChargeListController.php b/src/applications/phortune/controller/account/PhortuneAccountChargeListController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountChargeListController.php +++ /dev/null @@ -1,35 +0,0 @@ -getViewer(); - $account = $this->getAccount(); - - return id(new PhortuneChargeSearchEngine()) - ->setAccount($account) - ->setController($this) - ->buildResponse(); - } - - protected function buildApplicationCrumbs() { - $crumbs = parent::buildApplicationCrumbs(); - - if ($this->hasAccount()) { - $account = $this->getAccount(); - $id = $account->getID(); - - $crumbs->addTextCrumb( - pht('Charges'), - $account->getChargesURI()); - } - - return $crumbs; - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountChargesController.php b/src/applications/phortune/controller/account/PhortuneAccountChargesController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountChargesController.php +++ /dev/null @@ -1,70 +0,0 @@ -getAccount(); - $title = $account->getName(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Orders')) - ->setBorder(true); - - $header = $this->buildHeaderView(); - $authority = $this->newAccountAuthorityView(); - $charge_history = $this->buildChargeHistorySection($account); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $authority, - $charge_history, - )); - - $navigation = $this->buildSideNavView('charges'); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - - private function buildChargeHistorySection(PhortuneAccount $account) { - $viewer = $this->getViewer(); - - $charges = id(new PhortuneChargeQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->needCarts(true) - ->setLimit(100) - ->execute(); - - $charges_uri = $account->getChargeListURI(); - - $table = id(new PhortuneChargeTableView()) - ->setUser($viewer) - ->setCharges($charges); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Recent Charges')) - ->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setIcon('fa-list') - ->setHref($charges_uri) - ->setText(pht('View All Charges'))); - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($table); - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountController.php b/src/applications/phortune/controller/account/PhortuneAccountController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountController.php +++ /dev/null @@ -1,162 +0,0 @@ -shouldRequireAccountEditCapability()) { - $response = $this->loadAccountForEdit(); - } else { - $response = $this->loadAccountForView(); - } - - if ($response) { - return $response; - } - - return $this->handleAccountRequest($request); - } - - abstract protected function shouldRequireAccountEditCapability(); - abstract protected function handleAccountRequest(AphrontRequest $request); - - final protected function hasAccount() { - return (bool)$this->account; - } - - final protected function getAccount() { - if ($this->account === null) { - throw new Exception( - pht( - 'Unable to "getAccount()" before loading or setting account '. - 'context.')); - } - - return $this->account; - } - - protected function buildApplicationCrumbs() { - $crumbs = parent::buildApplicationCrumbs(); - - // If we hit a policy exception, we can make it here without finding - // an account. - if ($this->hasAccount()) { - $account = $this->getAccount(); - $crumbs->addTextCrumb($account->getName(), $account->getURI()); - } - - return $crumbs; - } - - private function loadAccountForEdit() { - return $this->loadAccountWithCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )); - } - - private function loadAccountForView() { - return $this->loadAccountWithCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - )); - } - - private function loadAccountWithCapabilities(array $capabilities) { - $viewer = $this->getViewer(); - $request = $this->getRequest(); - - $account_id = $request->getURIData('accountID'); - if (!$account_id) { - throw new Exception( - pht( - 'Controller ("%s") extends controller "%s", but is reachable '. - 'with no "accountID" in URI.', - get_class($this), - __CLASS__)); - } - - $account = id(new PhortuneAccountQuery()) - ->setViewer($viewer) - ->withIDs(array($account_id)) - ->requireCapabilities($capabilities) - ->executeOne(); - if (!$account) { - return new Aphront404Response(); - } - - $this->setAccount($account); - - return null; - } - - private function setAccount(PhortuneAccount $account) { - $this->account = $account; - - $viewer = $this->getViewer(); - if (!$account->isUserAccountMember($viewer)) { - $merchant_phids = $account->getMerchantPHIDs(); - $merchants = id(new PhortuneMerchantQuery()) - ->setViewer($viewer) - ->withPHIDs($merchant_phids) - ->withMemberPHIDs(array($viewer->getPHID())) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->execute(); - - $this->merchants = $merchants; - } else { - $this->merchants = array(); - } - - return $this; - } - - final protected function getMerchants() { - if ($this->merchants === null) { - throw new Exception( - pht( - 'Unable to "getMerchants()" before loading or setting account '. - 'context.')); - } - - return $this->merchants; - } - - final protected function newAccountAuthorityView() { - $viewer = $this->getViewer(); - - $merchants = $this->getMerchants(); - if (!$merchants) { - return null; - } - - $merchant_phids = mpull($merchants, 'getPHID'); - $merchant_handles = $viewer->loadHandles($merchant_phids); - $merchant_handles = iterator_to_array($merchant_handles); - - $merchant_list = mpull($merchant_handles, 'renderLink'); - $merchant_list = phutil_implode_html(', ', $merchant_list); - - $merchant_message = pht( - 'You can view this account because you control %d merchant(s) it '. - 'has a relationship with: %s.', - phutil_count($merchants), - $merchant_list); - - return id(new PHUIInfoView()) - ->setSeverity(PHUIInfoView::SEVERITY_NOTICE) - ->setErrors( - array( - $merchant_message, - )); - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountDetailsController.php b/src/applications/phortune/controller/account/PhortuneAccountDetailsController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountDetailsController.php +++ /dev/null @@ -1,155 +0,0 @@ -getAccount(); - $title = $account->getName(); - - $viewer = $this->getViewer(); - - $invoices = id(new PhortuneCartQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->needPurchases(true) - ->withInvoices(true) - ->execute(); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->setBorder(true); - - $header = $this->buildHeaderView(); - - $authority = $this->newAccountAuthorityView(); - $details = $this->newDetailsView($account); - - $curtain = $this->buildCurtainView($account); - - $timeline = $this->buildTransactionTimeline( - $account, - new PhortuneAccountTransactionQuery()); - $timeline->setShouldTerminate(true); - - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setCurtain($curtain) - ->setMainColumn( - array( - $authority, - $details, - $timeline, - )); - - $navigation = $this->buildSideNavView('details'); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - - } - - private function buildCurtainView(PhortuneAccount $account) { - $viewer = $this->getViewer(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $account, - PhabricatorPolicyCapability::CAN_EDIT); - - $edit_uri = $this->getApplicationURI('account/edit/'.$account->getID().'/'); - - $curtain = $this->newCurtainView($account); - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Edit Account')) - ->setIcon('fa-pencil') - ->setHref($edit_uri) - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit)); - - $member_phids = $account->getMemberPHIDs(); - $handles = $viewer->loadHandles($member_phids); - - $member_list = id(new PHUIObjectItemListView()) - ->setSimple(true); - - foreach ($member_phids as $member_phid) { - $image_uri = $handles[$member_phid]->getImageURI(); - $image_href = $handles[$member_phid]->getURI(); - $person = $handles[$member_phid]; - - $member = id(new PHUIObjectItemView()) - ->setImageURI($image_uri) - ->setHref($image_href) - ->setHeader($person->getFullName()); - - $member_list->addItem($member); - } - - $curtain->newPanel() - ->setHeaderText(pht('Managers')) - ->appendChild($member_list); - - $merchant_list = id(new PHUIObjectItemListView()) - ->setSimple(true) - ->setNoDataString(pht('No purchase history.')); - - $merchant_phids = $account->getMerchantPHIDs(); - $handles = $viewer->loadHandles($merchant_phids); - - foreach ($merchant_phids as $merchant_phid) { - $handle = $handles[$merchant_phid]; - - $merchant = id(new PHUIObjectItemView()) - ->setImageURI($handle->getImageURI()) - ->setHref($handle->getURI()) - ->setHeader($handle->getFullName()); - - $merchant_list->addItem($merchant); - } - - $curtain->newPanel() - ->setHeaderText(pht('Merchants')) - ->appendChild($merchant_list); - - return $curtain; - } - - private function newDetailsView(PhortuneAccount $account) { - $viewer = $this->getViewer(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer); - - $view->addProperty(pht('Account Name'), $account->getName()); - - $display_name = $account->getBillingName(); - if (!strlen($display_name)) { - $display_name = phutil_tag('em', array(), pht('None')); - } - - $display_address = $account->getBillingAddress(); - if (!strlen($display_address)) { - $display_address = phutil_tag('em', array(), pht('None')); - } else { - $display_address = phutil_escape_html_newlines($display_address); - } - - $view->addProperty(pht('Billing Name'), $display_name); - $view->addProperty(pht('Billing Address'), $display_address); - - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Account Details')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->addPropertyList($view); - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountEditController.php b/src/applications/phortune/controller/account/PhortuneAccountEditController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountEditController.php +++ /dev/null @@ -1,11 +0,0 @@ -setController($this) - ->buildResponse(); - } -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountEmailAddressesController.php b/src/applications/phortune/controller/account/PhortuneAccountEmailAddressesController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountEmailAddressesController.php +++ /dev/null @@ -1,92 +0,0 @@ -getAccount(); - $title = $account->getName(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Email Addresses')) - ->setBorder(true); - - $header = $this->buildHeaderView(); - $authority = $this->newAccountAuthorityView(); - $addresses = $this->buildAddressesSection($account); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $authority, - $addresses, - )); - - $navigation = $this->buildSideNavView('addresses'); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - - private function buildAddressesSection(PhortuneAccount $account) { - $viewer = $this->getViewer(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $account, - PhabricatorPolicyCapability::CAN_EDIT); - - $id = $account->getID(); - - $add = id(new PHUIButtonView()) - ->setTag('a') - ->setText(pht('Add Address')) - ->setIcon('fa-plus') - ->setWorkflow(!$can_edit) - ->setDisabled(!$can_edit) - ->setHref("/phortune/account/{$id}/addresses/edit/"); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Billing Email Addresses')) - ->addActionLink($add); - - $addresses = id(new PhortuneAccountEmailQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->execute(); - - $list = id(new PHUIObjectItemListView()) - ->setUser($viewer) - ->setNoDataString( - pht( - 'There are no billing email addresses associated '. - 'with this account.')); - - $addresses = id(new PhortuneAccountEmailQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->execute(); - foreach ($addresses as $address) { - $item = id(new PHUIObjectItemView()) - ->setObjectName($address->getObjectName()) - ->setHeader($address->getAddress()) - ->setHref($address->getURI()); - - $list->addItem($item); - } - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setObjectList($list); - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountEmailEditController.php b/src/applications/phortune/controller/account/PhortuneAccountEmailEditController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountEmailEditController.php +++ /dev/null @@ -1,22 +0,0 @@ -getAccount(); - - $engine = id(new PhortuneAccountEmailEditEngine()) - ->setController($this); - - if (!$request->getURIData('id')) { - $engine->setAccount($account); - } - - return $engine->buildResponse(); - } -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountEmailRotateController.php b/src/applications/phortune/controller/account/PhortuneAccountEmailRotateController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountEmailRotateController.php +++ /dev/null @@ -1,62 +0,0 @@ -getViewer(); - $account = $this->getAccount(); - - $address = id(new PhortuneAccountEmailQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withIDs(array($request->getURIData('addressID'))) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - if (!$address) { - return new Aphront404Response(); - } - - $address_uri = $address->getURI(); - - if ($request->isFormOrHisecPost()) { - $xactions = array(); - - $xactions[] = $address->getApplicationTransactionTemplate() - ->setTransactionType( - PhortuneAccountEmailRotateTransaction::TRANSACTIONTYPE) - ->setNewValue(true); - - $address->getApplicationTransactionEditor() - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnMissingFields(true) - ->setContinueOnNoEffect(true) - ->setCancelURI($address_uri) - ->applyTransactions($address, $xactions); - - return id(new AphrontRedirectResponse())->setURI($address_uri); - } - - return $this->newDialog() - ->setTitle(pht('Rotate Access Key')) - ->appendParagraph( - pht( - 'Rotate the access key for email address %s?', - phutil_tag('strong', array(), $address->getAddress()))) - ->appendParagraph( - pht( - 'Existing access links which have been sent to this email address '. - 'will stop working.')) - ->addSubmitButton(pht('Rotate Access Key')) - ->addCancelButton($address_uri); - } -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountEmailStatusController.php b/src/applications/phortune/controller/account/PhortuneAccountEmailStatusController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountEmailStatusController.php +++ /dev/null @@ -1,137 +0,0 @@ -getViewer(); - $account = $this->getAccount(); - - $address = id(new PhortuneAccountEmailQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withIDs(array($request->getURIData('addressID'))) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - if (!$address) { - return new Aphront404Response(); - } - - $address_uri = $address->getURI(); - - $is_enable = false; - $is_disable = false; - - $old_status = $address->getStatus(); - switch ($request->getURIData('action')) { - case 'enable': - if ($old_status === PhortuneAccountEmailStatus::STATUS_ACTIVE) { - return $this->newDialog() - ->setTitle(pht('Already Enabled')) - ->appendParagraph( - pht( - 'You can not enable this address because it is already '. - 'active.')) - ->addCancelButton($address_uri); - } - - if ($old_status === PhortuneAccountEmailStatus::STATUS_UNSUBSCRIBED) { - return $this->newDialog() - ->setTitle(pht('Permanently Unsubscribed')) - ->appendParagraph( - pht( - 'You can not enable this address because it has been '. - 'permanently unsubscribed.')) - ->addCancelButton($address_uri); - } - - $new_status = PhortuneAccountEmailStatus::STATUS_ACTIVE; - $is_enable = true; - break; - case 'disable': - if ($old_status === PhortuneAccountEmailStatus::STATUS_DISABLED) { - return $this->newDialog() - ->setTitle(pht('Already Disabled')) - ->appendParagraph( - pht( - 'You can not disabled this address because it is already '. - 'disabled.')) - ->addCancelButton($address_uri); - } - - if ($old_status === PhortuneAccountEmailStatus::STATUS_UNSUBSCRIBED) { - return $this->newDialog() - ->setTitle(pht('Permanently Unsubscribed')) - ->appendParagraph( - pht( - 'You can not disable this address because it has been '. - 'permanently unsubscribed.')) - ->addCancelButton($address_uri); - } - - $new_status = PhortuneAccountEmailStatus::STATUS_DISABLED; - $is_disable = true; - break; - default: - return new Aphront404Response(); - } - - if ($request->isFormOrHisecPost()) { - $xactions = array(); - - $xactions[] = $address->getApplicationTransactionTemplate() - ->setTransactionType( - PhortuneAccountEmailStatusTransaction::TRANSACTIONTYPE) - ->setNewValue($new_status); - - $address->getApplicationTransactionEditor() - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnMissingFields(true) - ->setContinueOnNoEffect(true) - ->setCancelURI($address_uri) - ->applyTransactions($address, $xactions); - - return id(new AphrontRedirectResponse())->setURI($address_uri); - } - - $dialog = $this->newDialog(); - - $body = array(); - - if ($is_disable) { - $title = pht('Disable Address'); - - $body[] = pht( - 'This address will no longer receive email, and access links will '. - 'no longer function.'); - - $submit = pht('Disable Address'); - } else { - $title = pht('Enable Address'); - - $body[] = pht( - 'This address will receive email again, and existing links '. - 'to access order history will work again.'); - - $submit = pht('Enable Address'); - } - - foreach ($body as $graph) { - $dialog->appendParagraph($graph); - } - - return $dialog - ->setTitle($title) - ->addCancelButton($address_uri) - ->addSubmitButton($submit); - } -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountEmailViewController.php b/src/applications/phortune/controller/account/PhortuneAccountEmailViewController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountEmailViewController.php +++ /dev/null @@ -1,176 +0,0 @@ -getViewer(); - $account = $this->getAccount(); - - $address = id(new PhortuneAccountEmailQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withIDs(array($request->getURIData('addressID'))) - ->executeOne(); - if (!$address) { - return new Aphront404Response(); - } - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Email Addresses'), $account->getEmailAddressesURI()) - ->addTextCrumb($address->getObjectName()) - ->setBorder(true); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Account Email: %s', $address->getAddress())); - - $details = $this->newDetailsView($address); - - $timeline = $this->buildTransactionTimeline( - $address, - new PhortuneAccountEmailTransactionQuery()); - $timeline->setShouldTerminate(true); - - $curtain = $this->buildCurtainView($address); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setCurtain($curtain) - ->setMainColumn( - array( - $details, - $timeline, - )); - - return $this->newPage() - ->setTitle($address->getObjectName()) - ->setCrumbs($crumbs) - ->appendChild($view); - } - - private function buildCurtainView(PhortuneAccountEmail $address) { - $viewer = $this->getViewer(); - $account = $address->getAccount(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $address, - PhabricatorPolicyCapability::CAN_EDIT); - - $edit_uri = $this->getApplicationURI( - urisprintf( - 'account/%d/addresses/edit/%d/', - $account->getID(), - $address->getID())); - - if ($can_edit) { - $external_uri = $address->getExternalURI(); - } else { - $external_uri = null; - } - - $curtain = $this->newCurtainView($account); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Edit Address')) - ->setIcon('fa-pencil') - ->setHref($edit_uri) - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit)); - - switch ($address->getStatus()) { - case PhortuneAccountEmailStatus::STATUS_ACTIVE: - $disable_name = pht('Disable Address'); - $disable_icon = 'fa-times'; - $can_disable = true; - $disable_action = 'disable'; - break; - case PhortuneAccountEmailStatus::STATUS_DISABLED: - $disable_name = pht('Enable Address'); - $disable_icon = 'fa-check'; - $can_disable = true; - $disable_action = 'enable'; - break; - case PhortuneAccountEmailStatus::STATUS_UNSUBSCRIBED: - $disable_name = pht('Disable Address'); - $disable_icon = 'fa-times'; - $can_disable = false; - $disable_action = 'disable'; - break; - } - - $disable_uri = $this->getApplicationURI( - urisprintf( - 'account/%d/addresses/%d/%s/', - $account->getID(), - $address->getID(), - $disable_action)); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName($disable_name) - ->setIcon($disable_icon) - ->setHref($disable_uri) - ->setDisabled(!$can_disable) - ->setWorkflow(true)); - - $rotate_uri = $this->getApplicationURI( - urisprintf( - 'account/%d/addresses/%d/rotate/', - $account->getID(), - $address->getID())); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Rotate Access Key')) - ->setIcon('fa-refresh') - ->setHref($rotate_uri) - ->setDisabled(!$can_edit) - ->setWorkflow(true)); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Show External View')) - ->setIcon('fa-eye') - ->setHref($external_uri) - ->setDisabled(!$can_edit) - ->setOpenInNewWindow(true)); - - return $curtain; - } - - private function newDetailsView(PhortuneAccountEmail $address) { - $viewer = $this->getViewer(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer); - - $access_key = $address->getAccessKey(); - - // This is not a meaningful security barrier: the full plaintext of the - // access key is visible on the page in the link target of the "Show - // External View" action. It's just here to make it clear "Rotate Access - // Key" actually does something. - - $prefix_length = 4; - $visible_part = substr($access_key, 0, $prefix_length); - $masked_part = str_repeat( - "\xE2\x80\xA2", - strlen($access_key) - $prefix_length); - $access_display = $visible_part.$masked_part; - $access_display = phutil_tag('tt', array(), $access_display); - - $view->addProperty(pht('Email Address'), $address->getAddress()); - $view->addProperty(pht('Access Key'), $access_display); - - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Email Address Details')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->addPropertyList($view); - } -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountListController.php b/src/applications/phortune/controller/account/PhortuneAccountListController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountListController.php +++ /dev/null @@ -1,111 +0,0 @@ -getViewer(); - - $accounts = id(new PhortuneAccountQuery()) - ->setViewer($viewer) - ->withMemberPHIDs(array($viewer->getPHID())) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->execute(); - - $merchants = id(new PhortuneMerchantQuery()) - ->setViewer($viewer) - ->withMemberPHIDs(array($viewer->getPHID())) - ->needProfileImage(true) - ->execute(); - - $title = pht('Accounts'); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->addTextCrumb(pht('Accounts')); - $crumbs->setBorder(true); - - $payment_list = id(new PHUIObjectItemListView()) - ->setUser($viewer) - ->setNoDataString( - pht( - 'You are not a member of any payment accounts. Payment '. - 'accounts are used to make purchases.')); - - foreach ($accounts as $account) { - $item = id(new PHUIObjectItemView()) - ->setSubhead(pht('Account %d', $account->getID())) - ->setHeader($account->getName()) - ->setHref($account->getURI()) - ->setObject($account) - ->setImageIcon('fa-user-circle'); - - $payment_list->addItem($item); - } - - $payment_header = id(new PHUIHeaderView()) - ->setHeader(pht('Payment Accounts')) - ->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setHref($this->getApplicationURI('account/edit/')) - ->setIcon('fa-plus') - ->setText(pht('Create Account'))); - - $payment_box = id(new PHUIObjectBoxView()) - ->setHeader($payment_header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setObjectList($payment_list); - - $merchant_list = id(new PHUIObjectItemListView()) - ->setUser($viewer) - ->setNoDataString( - pht( - 'You do not control any merchant accounts. Merchant accounts are '. - 'used to receive payments.')); - - foreach ($merchants as $merchant) { - $item = id(new PHUIObjectItemView()) - ->setSubhead(pht('Merchant %d', $merchant->getID())) - ->setHeader($merchant->getName()) - ->setHref($this->getApplicationURI('/merchant/'.$merchant->getID().'/')) - ->setObject($merchant) - ->setImageURI($merchant->getProfileImageURI()); - - $merchant_list->addItem($item); - } - - $merchant_header = id(new PHUIHeaderView()) - ->setHeader(pht('Merchant Accounts')) - ->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setHref($this->getApplicationURI('merchant/')) - ->setIcon('fa-list') - ->setText(pht('View All Merchants'))); - - $merchant_box = id(new PHUIObjectBoxView()) - ->setHeader($merchant_header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setObjectList($merchant_list); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Accounts')); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter(array( - $payment_box, - $merchant_box, - )); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->appendChild($view); - - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountManagersController.php b/src/applications/phortune/controller/account/PhortuneAccountManagersController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountManagersController.php +++ /dev/null @@ -1,88 +0,0 @@ -getAccount(); - $title = $account->getName(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Managers')) - ->setBorder(true); - - $header = $this->buildHeaderView(); - $authority = $this->newAccountAuthorityView(); - $members = $this->buildMembersSection($account); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $authority, - $members, - )); - - $navigation = $this->buildSideNavView('managers'); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - - } - - private function buildMembersSection(PhortuneAccount $account) { - $viewer = $this->getViewer(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $account, - PhabricatorPolicyCapability::CAN_EDIT); - - $id = $account->getID(); - - $add = id(new PHUIButtonView()) - ->setTag('a') - ->setText(pht('Add Managers')) - ->setIcon('fa-plus') - ->setWorkflow(true) - ->setDisabled(!$can_edit) - ->setHref("/phortune/account/{$id}/managers/add/"); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Account Managers')) - ->addActionLink($add); - - $list = id(new PHUIObjectItemListView()) - ->setUser($viewer); - - $member_phids = $account->getMemberPHIDs(); - $handles = $viewer->loadHandles($member_phids); - - foreach ($member_phids as $member_phid) { - $image_uri = $handles[$member_phid]->getImageURI(); - $image_href = $handles[$member_phid]->getURI(); - $person = $handles[$member_phid]; - - $member = id(new PHUIObjectItemView()) - ->setImageURI($image_uri) - ->setHref($image_href) - ->setHeader($person->getFullName()) - ->addAttribute(pht('Account Manager')); - - $list->addItem($member); - } - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setObjectList($list); - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountOrderListController.php b/src/applications/phortune/controller/account/PhortuneAccountOrderListController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountOrderListController.php +++ /dev/null @@ -1,55 +0,0 @@ -getViewer(); - $account = $this->getAccount(); - - $engine = id(new PhortuneCartSearchEngine()) - ->setController($this) - ->setAccount($account); - - $subscription_id = $request->getURIData('subscriptionID'); - if ($subscription_id) { - $subscription = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withIDs(array($subscription_id)) - ->executeOne(); - if (!$subscription) { - return new Aphront404Response(); - } - - $engine->setSubscription($subscription); - $this->subscription = $subscription; - } - - return $engine->buildResponse(); - } - - protected function buildApplicationCrumbs() { - $crumbs = parent::buildApplicationCrumbs(); - - $subscription = $this->subscription; - if ($subscription) { - $crumbs->addTextCrumb( - $subscription->getObjectName(), - $subscription->getURI()); - } else if ($this->hasAccount()) { - $account = $this->getAccount(); - - $crumbs->addTextCrumb(pht('Orders'), $account->getOrdersURI()); - } - - return $crumbs; - } - - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountOrdersController.php b/src/applications/phortune/controller/account/PhortuneAccountOrdersController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountOrdersController.php +++ /dev/null @@ -1,40 +0,0 @@ -getAccount(); - $title = $account->getName(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Orders')) - ->setBorder(true); - - $header = $this->buildHeaderView(); - $authority = $this->newAccountAuthorityView(); - - $order_history = $this->newRecentOrdersView($account, 100); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $authority, - $order_history, - )); - - $navigation = $this->buildSideNavView('orders'); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountOverviewController.php b/src/applications/phortune/controller/account/PhortuneAccountOverviewController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountOverviewController.php +++ /dev/null @@ -1,126 +0,0 @@ -getAccount(); - $title = $account->getName(); - - $viewer = $this->getViewer(); - - $invoices = id(new PhortuneCartQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->needPurchases(true) - ->withInvoices(true) - ->execute(); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->setBorder(true); - - $header = $this->buildHeaderView(); - - $authority = $this->newAccountAuthorityView(); - $status = $this->buildStatusView($account, $invoices); - $invoices = $this->buildInvoicesSection($account, $invoices); - $purchase_history = $this->newRecentOrdersView($account, 10); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $authority, - $status, - $invoices, - $purchase_history, - )); - - $navigation = $this->buildSideNavView('overview'); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - - private function buildStatusView(PhortuneAccount $account, $invoices) { - $status_items = $this->getStatusItemsForAccount($account, $invoices); - $view = array(); - foreach ($status_items as $item) { - $view[] = id(new PHUIInfoView()) - ->setSeverity(idx($item, 'severity')) - ->appendChild(idx($item, 'note')); - } - return $view; - } - - private function buildInvoicesSection( - PhortuneAccount $account, - array $carts) { - - $viewer = $this->getViewer(); - - $table = id(new PhortuneOrderTableView()) - ->setNoDataString(pht('You have no unpaid invoices.')) - ->setIsInvoices(true) - ->setUser($viewer) - ->setCarts($carts); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Invoices Due')); - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($table); - } - - protected function buildApplicationCrumbs() { - $crumbs = parent::buildApplicationCrumbs(); - - $crumbs->addAction( - id(new PHUIListItemView()) - ->setIcon('fa-exchange') - ->setHref($this->getApplicationURI('account/')) - ->setName(pht('Switch Accounts'))); - - return $crumbs; - } - - private function getStatusItemsForAccount( - PhortuneAccount $account, - array $invoices) { - $viewer = $this->getViewer(); - - assert_instances_of($invoices, 'PhortuneCart'); - $items = array(); - - $methods = id(new PhortunePaymentMethodQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withStatuses( - array( - PhortunePaymentMethod::STATUS_ACTIVE, - )) - ->execute(); - - if ($invoices) { - $items[] = array( - 'severity' => PHUIInfoView::SEVERITY_ERROR, - 'note' => pht('You have %d unpaid invoice(s).', count($invoices)), - ); - } - - // TODO: If a payment method has expired or is expiring soon, we should - // add a status check for it. - - return $items; - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodController.php b/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodController.php +++ /dev/null @@ -1,96 +0,0 @@ -getAccount(); - $title = $account->getName(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Payment Methods')) - ->setBorder(true); - - $authority = $this->newAccountAuthorityView(); - $header = $this->buildHeaderView(); - $methods = $this->buildPaymentMethodsSection($account); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $authority, - $methods, - )); - - $navigation = $this->buildSideNavView('methods'); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - - private function buildPaymentMethodsSection(PhortuneAccount $account) { - $viewer = $this->getViewer(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $account, - PhabricatorPolicyCapability::CAN_EDIT); - - $id = $account->getID(); - - $add = id(new PHUIButtonView()) - ->setTag('a') - ->setText(pht('Add Payment Method')) - ->setIcon('fa-plus') - ->setHref($this->getApplicationURI("account/{$id}/methods/new/")) - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Payment Methods')) - ->addActionLink($add); - - $list = id(new PHUIObjectItemListView()) - ->setUser($viewer) - ->setFlush(true) - ->setNoDataString( - pht('There are no payment methods associated with this account.')); - - $methods = id(new PhortunePaymentMethodQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withStatuses( - array( - PhortunePaymentMethod::STATUS_ACTIVE, - )) - ->execute(); - - foreach ($methods as $method) { - $id = $method->getID(); - - $item = id(new PHUIObjectItemView()) - ->setObjectName($method->getObjectName()) - ->setHeader($method->getFullDisplayName()) - ->setHref($method->getURI()); - - $provider = $method->buildPaymentProvider(); - $item->addAttribute($provider->getPaymentMethodProviderDescription()); - - $list->addItem($item); - } - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setObjectList($list); - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodViewController.php b/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodViewController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodViewController.php +++ /dev/null @@ -1,154 +0,0 @@ -getViewer(); - $account = $this->getAccount(); - - $method = id(new PhortunePaymentMethodQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withIDs(array($request->getURIData('id'))) - ->withStatuses( - array( - PhortunePaymentMethod::STATUS_ACTIVE, - )) - ->executeOne(); - if (!$method) { - return new Aphront404Response(); - } - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Payment Methods'), $account->getPaymentMethodsURI()) - ->addTextCrumb($method->getObjectName()) - ->setBorder(true); - - $header = id(new PHUIHeaderView()) - ->setHeader($method->getFullDisplayName()); - - $details = $this->newDetailsView($method); - - $timeline = $this->buildTransactionTimeline( - $method, - new PhortunePaymentMethodTransactionQuery()); - $timeline->setShouldTerminate(true); - - $autopay = $this->newAutopayView($method); - - $curtain = $this->buildCurtainView($method); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setCurtain($curtain) - ->setMainColumn( - array( - $details, - $autopay, - $timeline, - )); - - return $this->newPage() - ->setTitle($method->getObjectName()) - ->setCrumbs($crumbs) - ->appendChild($view); - } - - private function buildCurtainView(PhortunePaymentMethod $method) { - $viewer = $this->getViewer(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $method, - PhabricatorPolicyCapability::CAN_EDIT); - - $edit_uri = $this->getApplicationURI( - urisprintf( - 'card/%d/edit/', - $method->getID())); - - $remove_uri = $this->getApplicationURI( - urisprintf( - 'card/%d/disable/', - $method->getID())); - - $curtain = $this->newCurtainView($method); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Edit Payment Method')) - ->setIcon('fa-pencil') - ->setHref($edit_uri) - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit)); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Remove Payment Method')) - ->setIcon('fa-times') - ->setHref($remove_uri) - ->setDisabled(!$can_edit) - ->setWorkflow(true)); - - return $curtain; - } - - private function newDetailsView(PhortunePaymentMethod $method) { - $viewer = $this->getViewer(); - - $merchant_phid = $method->getMerchantPHID(); - $handles = $viewer->loadHandles( - array( - $merchant_phid, - )); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer); - - if (strlen($method->getName())) { - $view->addProperty(pht('Name'), $method->getDisplayName()); - } - - $view->addProperty(pht('Summary'), $method->getSummary()); - $view->addProperty(pht('Expires'), $method->getDisplayExpires()); - - $view->addProperty( - pht('Merchant'), - $handles[$merchant_phid]->renderLink()); - - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Payment Method Details')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->addPropertyList($view); - } - - private function newAutopayView(PhortunePaymentMethod $method) { - $viewer = $this->getViewer(); - - $subscriptions = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withPaymentMethodPHIDs(array($method->getPHID())) - ->execute(); - - $table = id(new PhortuneSubscriptionTableView()) - ->setViewer($viewer) - ->setSubscriptions($subscriptions) - ->newTableView(); - - $table->setNoDataString( - pht( - 'This payment method is not the default payment method for '. - 'any subscriptions.')); - - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Autopay Subscriptions')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($table); - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountProfileController.php b/src/applications/phortune/controller/account/PhortuneAccountProfileController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountProfileController.php +++ /dev/null @@ -1,142 +0,0 @@ -getViewer(); - $account = $this->getAccount(); - $title = $account->getName(); - - $header = id(new PHUIHeaderView()) - ->setUser($viewer) - ->setHeader($title) - ->setHeaderIcon('fa-user-circle'); - - if ($this->getMerchants()) { - $customer_tag = id(new PHUITagView()) - ->setType(PHUITagView::TYPE_SHADE) - ->setName(pht('Customer Account')) - ->setColor('indigo') - ->setIcon('fa-credit-card'); - $header->addTag($customer_tag); - } - - return $header; - } - - protected function buildSideNavView($filter = null) { - $viewer = $this->getViewer(); - $account = $this->getAccount(); - $id = $account->getID(); - - $can_edit = !$this->getMerchants(); - - $nav = id(new AphrontSideNavFilterView()) - ->setBaseURI(new PhutilURI($this->getApplicationURI())); - - $nav->addLabel(pht('Account')); - - $nav->addFilter( - 'overview', - pht('Overview'), - $account->getURI(), - 'fa-user-circle'); - - $nav->newLink('details') - ->setName(pht('Account Details')) - ->setHref($this->getApplicationURI("/account/{$id}/details/")) - ->setIcon('fa-address-card-o') - ->setWorkflow(!$can_edit) - ->setDisabled(!$can_edit); - - $nav->addLabel(pht('Payments')); - - $nav->addFilter( - 'methods', - pht('Payment Methods'), - $account->getPaymentMethodsURI(), - 'fa-credit-card'); - - $nav->addFilter( - 'subscriptions', - pht('Subscriptions'), - $account->getSubscriptionsURI(), - 'fa-retweet'); - - $nav->addFilter( - 'orders', - pht('Orders'), - $account->getOrdersURI(), - 'fa-shopping-bag'); - - $nav->addFilter( - 'charges', - pht('Charges'), - $account->getChargesURI(), - 'fa-calculator'); - - $nav->addLabel(pht('Personnel')); - - $nav->addFilter( - 'managers', - pht('Account Managers'), - $this->getApplicationURI("/account/{$id}/managers/"), - 'fa-group'); - - $nav->newLink('addresses') - ->setname(pht('Email Addresses')) - ->setHref($account->getEmailAddressesURI()) - ->setIcon('fa-envelope-o') - ->setWorkflow(!$can_edit) - ->setDisabled(!$can_edit); - - $nav->selectFilter($filter); - - return $nav; - } - - final protected function newRecentOrdersView( - PhortuneAccount $account, - $limit) { - - $viewer = $this->getViewer(); - - $carts = id(new PhortuneCartQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->needPurchases(true) - ->withStatuses( - array( - PhortuneCart::STATUS_PURCHASING, - PhortuneCart::STATUS_CHARGED, - PhortuneCart::STATUS_HOLD, - PhortuneCart::STATUS_REVIEW, - PhortuneCart::STATUS_PURCHASED, - )) - ->setLimit($limit) - ->execute(); - - $orders_uri = $account->getOrderListURI(); - - $table = id(new PhortuneOrderTableView()) - ->setUser($viewer) - ->setCarts($carts); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Recent Orders')) - ->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setIcon('fa-list') - ->setHref($orders_uri) - ->setText(pht('View All Orders'))); - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($table); - } - - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountSubscriptionAutopayController.php b/src/applications/phortune/controller/account/PhortuneAccountSubscriptionAutopayController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountSubscriptionAutopayController.php +++ /dev/null @@ -1,137 +0,0 @@ -getViewer(); - $account = $this->getAccount(); - - $subscription = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withIDs(array($request->getURIData('subscriptionID'))) - ->withAccountPHIDs(array($account->getPHID())) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - if (!$subscription) { - return new Aphront404Response(); - } - - $method = id(new PhortunePaymentMethodQuery()) - ->setViewer($viewer) - ->withIDs(array($request->getURIData('methodID'))) - ->withAccountPHIDs(array($subscription->getAccountPHID())) - ->withMerchantPHIDs(array($subscription->getMerchantPHID())) - ->withStatuses( - array( - PhortunePaymentMethod::STATUS_ACTIVE, - )) - ->executeOne(); - if (!$method) { - return new Aphront404Response(); - } - - $next_uri = $subscription->getURI(); - - $autopay_phid = $subscription->getDefaultPaymentMethodPHID(); - $is_stop = ($autopay_phid === $method->getPHID()); - - if ($request->isFormOrHisecPost()) { - if ($is_stop) { - $new_phid = null; - } else { - $new_phid = $method->getPHID(); - } - - $xactions = array(); - - $xactions[] = $subscription->getApplicationTransactionTemplate() - ->setTransactionType( - PhortuneSubscriptionAutopayTransaction::TRANSACTIONTYPE) - ->setNewValue($new_phid); - - $editor = $subscription->getApplicationTransactionEditor() - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnNoEffect(true) - ->setContinueOnMissingFields(true) - ->setCancelURI($next_uri); - - $editor->applyTransactions($subscription, $xactions); - - return id(new AphrontRedirectResponse())->setURI($next_uri); - } - - $method_phid = $method->getPHID(); - $subscription_phid = $subscription->getPHID(); - - $handles = $viewer->loadHandles( - array( - $method_phid, - $subscription_phid, - )); - - $method_handle = $handles[$method_phid]; - $subscription_handle = $handles[$subscription_phid]; - - $method_display = $method_handle->renderLink(); - $method_display = phutil_tag( - 'strong', - array(), - $method_display); - - $subscription_display = $subscription_handle->renderLink(); - $subscription_display = phutil_tag( - 'strong', - array(), - $subscription_display); - - $body = array(); - if ($is_stop) { - $title = pht('Stop Autopay'); - - $body[] = pht( - 'Remove %s as the automatic payment method for subscription %s?', - $method_display, - $subscription_display); - - $body[] = pht( - 'This payment method will no longer be charged automatically.'); - - $submit = pht('Stop Autopay'); - } else { - $title = pht('Start Autopay'); - - $body[] = pht( - 'Set %s as the automatic payment method for subscription %s?', - $method_display, - $subscription_display); - - $body[] = pht( - 'This payment method will be used to automatically pay future '. - 'charges.'); - - $submit = pht('Start Autopay'); - } - - $dialog = $this->newDialog() - ->setTitle($title) - ->addCancelButton($next_uri) - ->addSubmitButton($submit); - - foreach ($body as $graph) { - $dialog->appendParagraph($graph); - } - - return $dialog; - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountSubscriptionController.php b/src/applications/phortune/controller/account/PhortuneAccountSubscriptionController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountSubscriptionController.php +++ /dev/null @@ -1,63 +0,0 @@ -getAccount(); - $title = $account->getName(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Subscriptions')) - ->setBorder(true); - - $header = $this->buildHeaderView(); - $authority = $this->newAccountAuthorityView(); - - $subscriptions = $this->buildSubscriptionsSection($account); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $authority, - $subscriptions, - )); - - $navigation = $this->buildSideNavView('subscriptions'); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - - } - - private function buildSubscriptionsSection(PhortuneAccount $account) { - $viewer = $this->getViewer(); - - $subscriptions = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->setLimit(25) - ->execute(); - - $table = id(new PhortuneSubscriptionTableView()) - ->setUser($viewer) - ->setSubscriptions($subscriptions); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Subscriptions')); - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($table); - } - -} diff --git a/src/applications/phortune/controller/account/PhortuneAccountSubscriptionViewController.php b/src/applications/phortune/controller/account/PhortuneAccountSubscriptionViewController.php deleted file mode 100644 --- a/src/applications/phortune/controller/account/PhortuneAccountSubscriptionViewController.php +++ /dev/null @@ -1,317 +0,0 @@ -getViewer(); - - $subscription = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withIDs(array($request->getURIData('subscriptionID'))) - ->needTriggers(true) - ->executeOne(); - if (!$subscription) { - return new Aphront404Response(); - } - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $subscription, - PhabricatorPolicyCapability::CAN_EDIT); - - $merchant = $subscription->getMerchant(); - $account = $subscription->getAccount(); - - $account_id = $account->getID(); - $subscription_id = $subscription->getID(); - - $title = $subscription->getSubscriptionFullName(); - - $header = id(new PHUIHeaderView()) - ->setHeader($title) - ->setHeaderIcon('fa-retweet'); - - $edit_uri = $subscription->getEditURI(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb($subscription->getSubscriptionCrumbName()) - ->setBorder(true); - - $properties = id(new PHUIPropertyListView()) - ->setUser($viewer); - - $next_invoice = $subscription->getTrigger()->getNextEventPrediction(); - $properties->addProperty( - pht('Next Invoice'), - phabricator_datetime($next_invoice, $viewer)); - - $autopay = $this->newAutopayView($subscription); - - $details = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Subscription Details')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->addPropertyList($properties); - - $due_box = $this->buildDueInvoices($subscription); - $invoice_box = $this->buildPastInvoices($subscription); - - $timeline = $this->buildTransactionTimeline( - $subscription, - new PhortuneSubscriptionTransactionQuery()); - $timeline->setShouldTerminate(true); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $details, - $autopay, - $due_box, - $invoice_box, - $timeline, - )); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->appendChild($view); - } - - private function buildDueInvoices(PhortuneSubscription $subscription) { - $viewer = $this->getViewer(); - - $invoices = id(new PhortuneCartQuery()) - ->setViewer($viewer) - ->withSubscriptionPHIDs(array($subscription->getPHID())) - ->needPurchases(true) - ->withInvoices(true) - ->execute(); - - $invoice_table = id(new PhortuneOrderTableView()) - ->setUser($viewer) - ->setCarts($invoices) - ->setIsInvoices(true); - - $invoice_header = id(new PHUIHeaderView()) - ->setHeader(pht('Invoices Due')); - - return id(new PHUIObjectBoxView()) - ->setHeader($invoice_header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->appendChild($invoice_table); - } - - private function buildPastInvoices(PhortuneSubscription $subscription) { - $viewer = $this->getViewer(); - - $invoices = id(new PhortuneCartQuery()) - ->setViewer($viewer) - ->withSubscriptionPHIDs(array($subscription->getPHID())) - ->needPurchases(true) - ->withStatuses( - array( - PhortuneCart::STATUS_PURCHASING, - PhortuneCart::STATUS_CHARGED, - PhortuneCart::STATUS_HOLD, - PhortuneCart::STATUS_REVIEW, - PhortuneCart::STATUS_PURCHASED, - )) - ->setLimit(50) - ->execute(); - - $invoice_table = id(new PhortuneOrderTableView()) - ->setUser($viewer) - ->setCarts($invoices); - - $account = $subscription->getAccount(); - $merchant = $subscription->getMerchant(); - - $account_id = $account->getID(); - $merchant_id = $merchant->getID(); - $subscription_id = $subscription->getID(); - - $invoices_uri = $this->getApplicationURI( - "{$account_id}/subscription/order/{$subscription_id}/"); - - $invoice_header = id(new PHUIHeaderView()) - ->setHeader(pht('Past Invoices')) - ->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setIcon('fa-list') - ->setHref($invoices_uri) - ->setText(pht('View All Invoices'))); - - return id(new PHUIObjectBoxView()) - ->setHeader($invoice_header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->appendChild($invoice_table); - } - - private function newAutopayView(PhortuneSubscription $subscription) { - $viewer = $this->getViewer(); - $account = $subscription->getAccount(); - - $add_method_uri = urisprintf( - '/account/%d/methods/new/?subscriptionID=%s', - $account->getID(), - $subscription->getID()); - $add_method_uri = $this->getApplicationURI($add_method_uri); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $subscription, - PhabricatorPolicyCapability::CAN_EDIT); - - $methods = id(new PhortunePaymentMethodQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($subscription->getAccountPHID())) - ->withMerchantPHIDs(array($subscription->getMerchantPHID())) - ->withStatuses( - array( - PhortunePaymentMethod::STATUS_ACTIVE, - )) - ->execute(); - $methods = mpull($methods, null, 'getPHID'); - - $autopay_phid = $subscription->getDefaultPaymentMethodPHID(); - $autopay_method = idx($methods, $autopay_phid); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Autopay')) - ->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setIcon('fa-plus') - ->setHref($add_method_uri) - ->setText(pht('Add Payment Method')) - ->setWorkflow(!$can_edit) - ->setDisabled(!$can_edit)); - - $methods = array_select_keys($methods, array($autopay_phid)) + $methods; - - $rows = array(); - $rowc = array(); - foreach ($methods as $method) { - $is_autopay = ($autopay_method === $method); - - $remove_uri = urisprintf( - '/card/%d/disable/?subscriptionID=%d', - $method->getID(), - $subscription->getID()); - $remove_uri = $this->getApplicationURI($remove_uri); - - $autopay_uri = urisprintf( - '/account/%d/subscriptions/%d/autopay/%d/', - $account->getID(), - $subscription->getID(), - $method->getID()); - $autopay_uri = $this->getApplicationURI($autopay_uri); - - $remove_button = id(new PHUIButtonView()) - ->setTag('a') - ->setColor('grey') - ->setIcon('fa-times') - ->setText(pht('Delete')) - ->setHref($remove_uri) - ->setWorkflow(true) - ->setDisabled(!$can_edit); - - if ($is_autopay) { - $autopay_button = id(new PHUIButtonView()) - ->setColor('red') - ->setIcon('fa-times') - ->setText(pht('Stop Autopay')); - } else { - if ($autopay_method) { - $make_color = 'grey'; - } else { - $make_color = 'green'; - } - - $autopay_button = id(new PHUIButtonView()) - ->setColor($make_color) - ->setIcon('fa-retweet') - ->setText(pht('Start Autopay')); - } - - $autopay_button - ->setTag('a') - ->setHref($autopay_uri) - ->setWorkflow(true) - ->setDisabled(!$can_edit); - - $rows[] = array( - $method->getID(), - phutil_tag( - 'a', - array( - 'href' => $method->getURI(), - ), - $method->getFullDisplayName()), - $method->getDisplayExpires(), - $autopay_button, - $remove_button, - ); - - if ($is_autopay) { - $rowc[] = 'highlighted'; - } else { - $rowc[] = null; - } - } - - $method_table = id(new AphrontTableView($rows)) - ->setHeaders( - array( - pht('ID'), - pht('Payment Method'), - pht('Expires'), - null, - null, - )) - ->setRowClasses($rowc) - ->setColumnClasses( - array( - null, - 'pri wide', - null, - 'right', - null, - )); - - if (!$autopay_method) { - $method_table->setNotice( - array( - id(new PHUIIconView())->setIcon('fa-warning yellow'), - ' ', - pht('Autopay is not currently configured for this subscription.'), - )); - } else { - $method_table->setNotice( - array( - id(new PHUIIconView())->setIcon('fa-check green'), - ' ', - pht( - 'Autopay is configured using %s.', - phutil_tag( - 'a', - array( - 'href' => $autopay_method->getURI(), - ), - $autopay_method->getFullDisplayName())), - )); - } - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($method_table); - } - -} diff --git a/src/applications/phortune/controller/cart/PhortuneCartAcceptController.php b/src/applications/phortune/controller/cart/PhortuneCartAcceptController.php deleted file mode 100644 --- a/src/applications/phortune/controller/cart/PhortuneCartAcceptController.php +++ /dev/null @@ -1,44 +0,0 @@ -getViewer(); - $cart = $this->getCart(); - - $cancel_uri = $cart->getDetailURI(); - - if ($cart->getStatus() !== PhortuneCart::STATUS_REVIEW) { - return $this->newDialog() - ->setTitle(pht('Order Not in Review')) - ->appendParagraph( - pht( - 'This order does not need manual review, so you can not '. - 'accept it.')) - ->addCancelButton($cancel_uri); - } - - if ($request->isFormPost()) { - $cart->didReviewCart(); - return id(new AphrontRedirectResponse())->setURI($cancel_uri); - } - - return $this->newDialog() - ->setTitle(pht('Accept Order?')) - ->appendParagraph( - pht( - 'This order has been flagged for manual review. You should review '. - 'it carefully before accepting it.')) - ->addCancelButton($cancel_uri) - ->addSubmitButton(pht('Accept Order')); - } -} diff --git a/src/applications/phortune/controller/cart/PhortuneCartCancelController.php b/src/applications/phortune/controller/cart/PhortuneCartCancelController.php deleted file mode 100644 --- a/src/applications/phortune/controller/cart/PhortuneCartCancelController.php +++ /dev/null @@ -1,201 +0,0 @@ -getViewer(); - $id = $request->getURIData('id'); - $action = $request->getURIData('action'); - - $cart = $this->getCart(); - $authority = $this->getMerchantAuthority(); - - switch ($action) { - case 'cancel': - // You must be able to edit the account to cancel an order. - PhabricatorPolicyFilter::requireCapability( - $viewer, - $cart->getAccount(), - PhabricatorPolicyCapability::CAN_EDIT); - $is_refund = false; - break; - case 'refund': - // You must be able to control the merchant to refund an order. - PhabricatorPolicyFilter::requireCapability( - $viewer, - $cart->getMerchant(), - PhabricatorPolicyCapability::CAN_EDIT); - $is_refund = true; - break; - default: - return new Aphront404Response(); - } - - $cancel_uri = $cart->getDetailURI(); - $merchant = $cart->getMerchant(); - - try { - if ($is_refund) { - $title = pht('Unable to Refund Order'); - $cart->assertCanRefundOrder(); - } else { - $title = pht('Unable to Cancel Order'); - $cart->assertCanCancelOrder(); - } - } catch (Exception $ex) { - return $this->newDialog() - ->setTitle($title) - ->appendChild($ex->getMessage()) - ->addCancelButton($cancel_uri, pht('Rats')); - } - - $charges = id(new PhortuneChargeQuery()) - ->setViewer($viewer) - ->withCartPHIDs(array($cart->getPHID())) - ->withStatuses( - array( - PhortuneCharge::STATUS_HOLD, - PhortuneCharge::STATUS_CHARGED, - )) - ->execute(); - - $amounts = mpull($charges, 'getAmountAsCurrency'); - $maximum = PhortuneCurrency::newFromList($amounts); - $v_refund = $maximum->formatForDisplay(); - - $errors = array(); - $e_refund = true; - if ($request->isFormPost()) { - if ($is_refund) { - try { - $refund = PhortuneCurrency::newFromUserInput( - $viewer, - $request->getStr('refund')); - $refund->assertInRange('0.00 USD', $maximum->formatForDisplay()); - } catch (Exception $ex) { - $errors[] = $ex->getMessage(); - $e_refund = pht('Invalid'); - } - } else { - $refund = $maximum; - } - - if (!$errors) { - $charges = msort($charges, 'getID'); - $charges = array_reverse($charges); - - if ($charges) { - $providers = id(new PhortunePaymentProviderConfigQuery()) - ->setViewer($viewer) - ->withPHIDs(mpull($charges, 'getProviderPHID')) - ->execute(); - $providers = mpull($providers, null, 'getPHID'); - } else { - $providers = array(); - } - - foreach ($charges as $charge) { - $refundable = $charge->getAmountRefundableAsCurrency(); - if (!$refundable->isPositive()) { - // This charge is a refund, or has already been fully refunded. - continue; - } - - if ($refund->isGreaterThan($refundable)) { - $refund_amount = $refundable; - } else { - $refund_amount = $refund; - } - - $provider_config = idx($providers, $charge->getProviderPHID()); - if (!$provider_config) { - throw new Exception(pht('Unable to load provider for charge!')); - } - - $provider = $provider_config->buildProvider(); - - $refund_charge = $cart->willRefundCharge( - $viewer, - $provider, - $charge, - $refund_amount); - - $refunded = false; - try { - $provider->refundCharge($charge, $refund_charge); - $refunded = true; - } catch (Exception $ex) { - phlog($ex); - $cart->didFailRefund($charge, $refund_charge); - } - - if ($refunded) { - $cart->didRefundCharge($charge, $refund_charge); - $refund = $refund->subtract($refund_amount); - } - - if (!$refund->isPositive()) { - break; - } - } - - if ($refund->isPositive()) { - throw new Exception(pht('Unable to refund some charges!')); - } - - // TODO: If every HOLD and CHARGING transaction has been fully refunded - // and we're in a HOLD, REVIEW, PURCHASING or CHARGED cart state we - // probably need to kick the cart back to READY here (or maybe kill - // it if it was in REVIEW)? - - return id(new AphrontRedirectResponse())->setURI($cancel_uri); - } - } - - if ($is_refund) { - $title = pht('Refund Order?'); - $body = pht('Really refund this order?'); - $button = pht('Refund Order'); - $cancel_text = pht('Cancel'); - - $form = id(new AphrontFormView()) - ->setUser($viewer) - ->appendChild( - id(new AphrontFormTextControl()) - ->setName('refund') - ->setLabel(pht('Amount')) - ->setError($e_refund) - ->setValue($v_refund)); - - $form = $form->buildLayoutView(); - - } else { - $title = pht('Cancel Order?'); - $body = pht('Really cancel this order? Any payment will be refunded.'); - $button = pht('Cancel Order'); - - // Don't give the user a "Cancel" button in response to a "Cancel?" - // prompt, as it's confusing. - $cancel_text = pht('Do Not Cancel Order'); - - $form = null; - } - - return $this->newDialog() - ->setTitle($title) - ->setErrors($errors) - ->appendChild($body) - ->appendChild($form) - ->addSubmitButton($button) - ->addCancelButton($cancel_uri, $cancel_text); - } -} diff --git a/src/applications/phortune/controller/cart/PhortuneCartCheckoutController.php b/src/applications/phortune/controller/cart/PhortuneCartCheckoutController.php deleted file mode 100644 --- a/src/applications/phortune/controller/cart/PhortuneCartCheckoutController.php +++ /dev/null @@ -1,234 +0,0 @@ -getViewer(); - $cart = $this->getCart(); - - $cancel_uri = $cart->getCancelURI(); - $merchant = $cart->getMerchant(); - - switch ($cart->getStatus()) { - case PhortuneCart::STATUS_BUILDING: - return $this->newDialog() - ->setTitle(pht('Incomplete Cart')) - ->appendParagraph( - pht( - 'The application that created this cart did not finish putting '. - 'products in it. You can not checkout with an incomplete '. - 'cart.')) - ->addCancelButton($cancel_uri); - case PhortuneCart::STATUS_READY: - // This is the expected, normal state for a cart that's ready for - // checkout. - break; - case PhortuneCart::STATUS_CHARGED: - case PhortuneCart::STATUS_PURCHASING: - case PhortuneCart::STATUS_HOLD: - case PhortuneCart::STATUS_REVIEW: - case PhortuneCart::STATUS_PURCHASED: - // For these states, kick the user to the order page to give them - // information and options. - return id(new AphrontRedirectResponse())->setURI($cart->getDetailURI()); - default: - throw new Exception( - pht( - 'Unknown cart status "%s"!', - $cart->getStatus())); - } - - $account = $cart->getAccount(); - $account_uri = $this->getApplicationURI($account->getID().'/'); - - $methods = id(new PhortunePaymentMethodQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withMerchantPHIDs(array($merchant->getPHID())) - ->withStatuses(array(PhortunePaymentMethod::STATUS_ACTIVE)) - ->execute(); - - $e_method = null; - $errors = array(); - - if ($request->isFormPost()) { - - // Require CAN_EDIT on the cart to actually make purchases. - - PhabricatorPolicyFilter::requireCapability( - $viewer, - $cart, - PhabricatorPolicyCapability::CAN_EDIT); - - $method_id = $request->getInt('paymentMethodID'); - $method = idx($methods, $method_id); - if (!$method) { - $e_method = pht('Required'); - $errors[] = pht('You must choose a payment method.'); - } - - if (!$errors) { - $provider = $method->buildPaymentProvider(); - - $charge = $cart->willApplyCharge($viewer, $provider, $method); - - try { - $provider->applyCharge($method, $charge); - } catch (Exception $ex) { - $cart->didFailCharge($charge); - return $this->newDialog() - ->setTitle(pht('Charge Failed')) - ->appendParagraph( - pht( - 'Unable to make payment: %s', - $ex->getMessage())) - ->addCancelButton($cart->getCheckoutURI(), pht('Continue')); - } - - $cart->didApplyCharge($charge); - - $done_uri = $cart->getCheckoutURI(); - return id(new AphrontRedirectResponse())->setURI($done_uri); - } - } - - $cart_box = id(new PhortuneOrderItemsView()) - ->setViewer($viewer) - ->setOrder($cart); - - $title = $cart->getName(); - - if (!$methods) { - $method_control = id(new AphrontFormStaticControl()) - ->setLabel(pht('Payment Method')) - ->setValue( - phutil_tag('em', array(), pht('No payment methods configured.'))); - } else { - $method_control = id(new AphrontFormRadioButtonControl()) - ->setLabel(pht('Payment Method')) - ->setName('paymentMethodID') - ->setValue($request->getInt('paymentMethodID')); - foreach ($methods as $method) { - $method_control->addButton( - $method->getID(), - $method->getFullDisplayName(), - $method->getDescription()); - } - } - - $method_control->setError($e_method); - - $account_id = $account->getID(); - - $params = array( - 'merchantID' => $merchant->getID(), - 'cartID' => $cart->getID(), - ); - - $payment_method_uri = urisprintf( - 'account/%d/methods/new/', - $account->getID()); - $payment_method_uri = $this->getApplicationURI($payment_method_uri); - $payment_method_uri = new PhutilURI($payment_method_uri, $params); - - $form = id(new AphrontFormView()) - ->setUser($viewer) - ->appendChild($method_control); - - $add_providers = $this->loadCreatePaymentMethodProvidersForMerchant( - $merchant); - if ($add_providers) { - $new_method = javelin_tag( - 'a', - array( - 'class' => 'button button-grey', - 'href' => $payment_method_uri, - ), - pht('Add New Payment Method')); - $form->appendChild( - id(new AphrontFormMarkupControl()) - ->setValue($new_method)); - } - - if ($methods || $add_providers) { - $submit = id(new AphrontFormSubmitControl()) - ->setValue(pht('Submit Payment')) - ->setDisabled(!$methods); - - if ($cart->getCancelURI() !== null) { - $submit->addCancelButton($cart->getCancelURI()); - } - - $form->appendChild($submit); - } - - $provider_form = null; - - $pay_providers = $this->loadOneTimePaymentProvidersForMerchant($merchant); - if ($pay_providers) { - $one_time_options = array(); - foreach ($pay_providers as $provider) { - $one_time_options[] = $provider->renderOneTimePaymentButton( - $account, - $cart, - $viewer); - } - - $one_time_options = phutil_tag( - 'div', - array( - 'class' => 'phortune-payment-onetime-list', - ), - $one_time_options); - - $provider_form = new PHUIFormLayoutView(); - $provider_form->appendChild( - id(new AphrontFormMarkupControl()) - ->setLabel(pht('Pay With')) - ->setValue($one_time_options)); - } - - $payment_box = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Choose Payment Method')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->appendChild($form) - ->appendChild($provider_form); - - $description_view = id(new PhortuneOrderDescriptionView()) - ->setViewer($viewer) - ->setOrder($cart); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->addTextCrumb(pht('Checkout')); - $crumbs->addTextCrumb($title); - $crumbs->setBorder(true); - - $header = id(new PHUIHeaderView()) - ->setHeader($title) - ->setHeaderIcon('fa-shopping-cart'); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $description_view, - $cart_box, - $payment_box, - )); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->appendChild($view); - - } -} diff --git a/src/applications/phortune/controller/cart/PhortuneCartController.php b/src/applications/phortune/controller/cart/PhortuneCartController.php deleted file mode 100644 --- a/src/applications/phortune/controller/cart/PhortuneCartController.php +++ /dev/null @@ -1,77 +0,0 @@ -getViewer(); - - if ($this->shouldRequireAccountAuthority()) { - $capabilities = array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } else { - $capabilities = array( - PhabricatorPolicyCapability::CAN_VIEW, - ); - } - - $cart = id(new PhortuneCartQuery()) - ->setViewer($viewer) - ->withIDs(array($request->getURIData('id'))) - ->needPurchases(true) - ->requireCapabilities($capabilities) - ->executeOne(); - if (!$cart) { - return new Aphront404Response(); - } - - if ($this->shouldRequireMerchantAuthority()) { - PhabricatorPolicyFilter::requireCapability( - $viewer, - $cart->getMerchant(), - PhabricatorPolicyCapability::CAN_EDIT); - } - - $this->cart = $cart; - - $can_edit = PhortuneMerchantQuery::canViewersEditMerchants( - array($viewer->getPHID()), - array($cart->getMerchantPHID())); - if ($can_edit) { - $this->merchantAuthority = $cart->getMerchant(); - } else { - $this->merchantAuthority = null; - } - - return $this->handleCartRequest($request); - } - - final protected function getCart() { - return $this->cart; - } - - final protected function getMerchantAuthority() { - return $this->merchantAuthority; - } - - final protected function hasMerchantAuthority() { - return (bool)$this->merchantAuthority; - } - - final protected function hasAccountAuthority() { - return (bool)PhabricatorPolicyFilter::hasCapability( - $this->getViewer(), - $this->getCart(), - PhabricatorPolicyCapability::CAN_EDIT); - } - -} diff --git a/src/applications/phortune/controller/cart/PhortuneCartUpdateController.php b/src/applications/phortune/controller/cart/PhortuneCartUpdateController.php deleted file mode 100644 --- a/src/applications/phortune/controller/cart/PhortuneCartUpdateController.php +++ /dev/null @@ -1,61 +0,0 @@ -getViewer(); - $id = $request->getURIData('id'); - - $cart = $this->getCart(); - $authority = $this->getMerchantAuthority(); - - $charges = id(new PhortuneChargeQuery()) - ->setViewer($viewer) - ->withCartPHIDs(array($cart->getPHID())) - ->needCarts(true) - ->withStatuses( - array( - PhortuneCharge::STATUS_HOLD, - PhortuneCharge::STATUS_CHARGED, - )) - ->execute(); - - if ($charges) { - $providers = id(new PhortunePaymentProviderConfigQuery()) - ->setViewer($viewer) - ->withPHIDs(mpull($charges, 'getProviderPHID')) - ->execute(); - $providers = mpull($providers, null, 'getPHID'); - } else { - $providers = array(); - } - - foreach ($charges as $charge) { - if ($charge->isRefund()) { - // Don't update refunds. - continue; - } - - $provider_config = idx($providers, $charge->getProviderPHID()); - if (!$provider_config) { - throw new Exception(pht('Unable to load provider for charge!')); - } - - $provider = $provider_config->buildProvider(); - $provider->updateCharge($charge); - } - - return id(new AphrontRedirectResponse()) - ->setURI($cart->getDetailURI()); - } - -} diff --git a/src/applications/phortune/controller/cart/PhortuneCartViewController.php b/src/applications/phortune/controller/cart/PhortuneCartViewController.php deleted file mode 100644 --- a/src/applications/phortune/controller/cart/PhortuneCartViewController.php +++ /dev/null @@ -1,213 +0,0 @@ -getViewer(); - $order = $this->getCart(); - $authority = $this->getMerchantAuthority(); - $can_edit = $this->hasAccountAuthority(); - - $is_printable = ($request->getURIData('action') === 'print'); - - $resume_uri = null; - if ($order->getStatus() === PhortuneCart::STATUS_PURCHASING) { - if ($can_edit) { - $resume_uri = $order->getMetadataValue('provider.checkoutURI'); - } - } - - $header = id(new PHUIHeaderView()) - ->setUser($viewer) - ->setHeader($order->getName()) - ->setHeaderIcon('fa-shopping-bag'); - - if ($order->getStatus() == PhortuneCart::STATUS_PURCHASED) { - $done_uri = $order->getDoneURI(); - if ($done_uri) { - $header->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setHref($done_uri) - ->setIcon('fa-check-square green') - ->setText($order->getDoneActionName())); - } - } - - $order_view = id(new PhortuneOrderSummaryView()) - ->setViewer($viewer) - ->setOrder($order) - ->setResumeURI($resume_uri) - ->setPrintable($is_printable); - - $crumbs = null; - $curtain = null; - - $main = array(); - $tail = array(); - - require_celerity_resource('phortune-invoice-css'); - - if ($is_printable) { - $body_class = 'phortune-invoice-view'; - - $tail[] = $order_view; - } else { - $body_class = 'phortune-cart-page'; - - $curtain = $this->buildCurtainView( - $order, - $can_edit, - $authority, - $resume_uri); - - $account = $order->getAccount(); - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb($account->getName(), $account->getURI()) - ->addTextCrumb(pht('Orders'), $account->getOrdersURI()) - ->addTextCrumb($order->getObjectName()) - ->setBorder(true); - - $timeline = $this->buildTransactionTimeline($order) - ->setShouldTerminate(true); - - $main[] = $order_view; - $main[] = $timeline; - } - - $column_view = id(new PHUITwoColumnView()) - ->setMainColumn($main) - ->setFooter($tail); - - if ($curtain) { - $column_view->setCurtain($curtain); - } - - $page = $this->newPage() - ->addClass($body_class) - ->setTitle( - array( - $order->getObjectName(), - $order->getName(), - )) - ->appendChild($column_view); - - if ($crumbs) { - $page->setCrumbs($crumbs); - } - - return $page; - } - - private function buildCurtainView( - PhortuneCart $cart, - $can_edit, - $authority, - $resume_uri) { - - $viewer = $this->getViewer(); - $id = $cart->getID(); - $curtain = $this->newCurtainView($cart); - $status = $cart->getStatus(); - - $is_ready = ($status === PhortuneCart::STATUS_READY); - - $can_cancel = ($can_edit && $cart->canCancelOrder()); - $can_checkout = ($can_edit && $is_ready); - $can_accept = ($status === PhortuneCart::STATUS_REVIEW); - $can_refund = ($authority && $cart->canRefundOrder()); - $can_void = ($authority && $cart->canVoidOrder()); - - $cancel_uri = $this->getApplicationURI("cart/{$id}/cancel/"); - $refund_uri = $this->getApplicationURI("cart/{$id}/refund/"); - $update_uri = $this->getApplicationURI("cart/{$id}/update/"); - $accept_uri = $this->getApplicationURI("cart/{$id}/accept/"); - $print_uri = $this->getApplicationURI("cart/{$id}/print/"); - $checkout_uri = $cart->getCheckoutURI(); - $void_uri = $this->getApplicationURI("cart/{$id}/void/"); - - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Printable Version')) - ->setHref($print_uri) - ->setOpenInNewWindow(true) - ->setIcon('fa-print')); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setType(PhabricatorActionView::TYPE_DIVIDER)); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Pay Now')) - ->setIcon('fa-credit-card') - ->setDisabled(!$can_checkout) - ->setWorkflow(!$can_checkout) - ->setHref($checkout_uri)); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Cancel Order')) - ->setIcon('fa-times') - ->setDisabled(!$can_cancel) - ->setWorkflow(true) - ->setHref($cancel_uri)); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Update Status')) - ->setIcon('fa-refresh') - ->setHref($update_uri)); - - if ($can_edit && $resume_uri) { - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Continue Checkout')) - ->setIcon('fa-shopping-bag') - ->setHref($resume_uri)); - } - - if ($authority) { - $curtain->addAction( - id(new PhabricatorActionView()) - ->setType(PhabricatorActionView::TYPE_DIVIDER)); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Accept Order')) - ->setIcon('fa-check') - ->setWorkflow(true) - ->setDisabled(!$can_accept) - ->setHref($accept_uri)); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Refund Order')) - ->setIcon('fa-reply') - ->setWorkflow(true) - ->setDisabled(!$can_refund) - ->setHref($refund_uri)); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Void Invoice')) - ->setIcon('fa-times') - ->setWorkflow(true) - ->setDisabled(!$can_void) - ->setHref($void_uri)); - } - - return $curtain; - } - -} diff --git a/src/applications/phortune/controller/cart/PhortuneCartVoidController.php b/src/applications/phortune/controller/cart/PhortuneCartVoidController.php deleted file mode 100644 --- a/src/applications/phortune/controller/cart/PhortuneCartVoidController.php +++ /dev/null @@ -1,43 +0,0 @@ -getViewer(); - $cart = $this->getCart(); - - $cancel_uri = $cart->getDetailURI(); - - try { - $title = pht('Unable to Void Invoice'); - $cart->assertCanVoidOrder(); - } catch (Exception $ex) { - return $this->newDialog() - ->setTitle($title) - ->appendChild($ex->getMessage()) - ->addCancelButton($cancel_uri); - } - - if ($request->isFormPost()) { - return id(new AphrontRedirectResponse())->setURI($cancel_uri); - } - - return $this->newDialog() - ->setTitle(pht('Void Invoice?')) - ->appendParagraph( - pht( - 'Really void this invoice? The customer will no longer be asked '. - 'to submit payment for it.')) - ->addCancelButton($cancel_uri) - ->addSubmitButton(pht('Void Invoice')); - } -} diff --git a/src/applications/phortune/controller/external/PhortuneExternalController.php b/src/applications/phortune/controller/external/PhortuneExternalController.php deleted file mode 100644 --- a/src/applications/phortune/controller/external/PhortuneExternalController.php +++ /dev/null @@ -1,172 +0,0 @@ -email; - } - - final protected function getAccountEmail() { - return $this->email; - } - - final protected function getExternalViewer() { - return PhabricatorUser::getOmnipotentUser(); - } - - final public function handleRequest(AphrontRequest $request) { - $address_key = $request->getURIData('addressKey'); - $access_key = $request->getURIData('accessKey'); - - $viewer = $this->getViewer(); - $xviewer = $this->getExternalViewer(); - - $email = id(new PhortuneAccountEmailQuery()) - ->setViewer($xviewer) - ->withAddressKeys(array($address_key)) - ->executeOne(); - if (!$email) { - return new Aphront404Response(); - } - - $account = $email->getAccount(); - - $can_see = PhabricatorPolicyFilter::hasCapability( - $viewer, - $account, - PhabricatorPolicyCapability::CAN_EDIT); - - $email_display = phutil_tag('strong', array(), $email->getAddress()); - $user_display = phutil_tag('strong', array(), $viewer->getUsername()); - - $actual_key = $email->getAccessKey(); - if (!phutil_hashes_are_identical($access_key, $actual_key)) { - $dialog = $this->newDialog() - ->setTitle(pht('Email Access Link Out of Date')) - ->appendParagraph( - pht( - 'You are trying to access this payment account as: %s', - $email_display)) - ->appendParagraph( - pht( - 'The access link you have followed is out of date and no longer '. - 'works.')); - - if ($can_see) { - $dialog->appendParagraph( - pht( - 'You are currently logged in as a user (%s) who has '. - 'permission to manage the payment account, so you can '. - 'continue to the updated link.', - $user_display)); - - $dialog->addCancelButton( - $email->getExternalURI(), - pht('Continue to Updated Link')); - } else { - $dialog->appendParagraph( - pht( - 'To access information about this payment account, follow '. - 'a more recent link or ask a user with access to give you '. - 'an updated link.')); - } - - return $dialog; - } - - switch ($email->getStatus()) { - case PhortuneAccountEmailStatus::STATUS_ACTIVE: - break; - case PhortuneAccountEmailStatus::STATUS_DISABLED: - return $this->newDialog() - ->setTitle(pht('Address Disabled')) - ->appendParagraph( - pht( - 'This email address (%s) has been disabled and no longer has '. - 'access to this payment account.', - $email_display)); - case PhortuneAccountEmailStatus::STATUS_UNSUBSCRIBED: - return $this->newDialog() - ->setTitle(pht('Permanently Unsubscribed')) - ->appendParagraph( - pht( - 'This email address (%s) has been permanently unsubscribed '. - 'and no longer has access to this payment account.', - $email_display)); - break; - default: - return new Aphront404Response(); - } - - $this->email = $email; - - return $this->handleExternalRequest($request); - } - - final protected function newExternalCrumbs() { - $viewer = $this->getViewer(); - - $crumbs = new PHUICrumbsView(); - - if ($this->hasAccountEmail()) { - $email = $this->getAccountEmail(); - $account = $email->getAccount(); - - $crumb_name = pht( - 'Payment Account: %s', - $account->getName()); - - $crumb = id(new PHUICrumbView()) - ->setIcon('fa-diamond') - ->setName($crumb_name) - ->setHref($email->getExternalURI()); - - $crumbs - ->addCrumb($crumb); - } else { - $crumb = id(new PHUICrumbView()) - ->setIcon('fa-diamond') - ->setText(pht('External Account View')); - - $crumbs->addCrumb($crumb); - } - - return $crumbs; - } - - final protected function newExternalView() { - $email = $this->getAccountEmail(); - $xviewer = $this->getExternalViewer(); - - $origin_phid = $email->getAuthorPHID(); - - $handles = $xviewer->loadHandles(array($origin_phid)); - - - $messages = array(); - $messages[] = pht( - 'You are viewing this payment account as: %s', - phutil_tag('strong', array(), $email->getAddress())); - - $messages[] = pht( - 'This email address was added to this payment account by: %s', - phutil_tag('strong', array(), $handles[$origin_phid]->getFullName())); - - $messages[] = pht( - 'Anyone who has a link to this page can view order history for '. - 'this payment account.'); - - return id(new PHUIInfoView()) - ->setSeverity(PHUIInfoView::SEVERITY_WARNING) - ->setErrors($messages); - } -} diff --git a/src/applications/phortune/controller/external/PhortuneExternalOrderController.php b/src/applications/phortune/controller/external/PhortuneExternalOrderController.php deleted file mode 100644 --- a/src/applications/phortune/controller/external/PhortuneExternalOrderController.php +++ /dev/null @@ -1,98 +0,0 @@ -getExternalViewer(); - $email = $this->getAccountEmail(); - $account = $email->getAccount(); - - $order = id(new PhortuneCartQuery()) - ->setViewer($xviewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withIDs(array($request->getURIData('orderID'))) - ->executeOne(); - if (!$order) { - return new Aphront404Response(); - } - - $is_printable = ($request->getURIData('action') === 'print'); - - $order_view = id(new PhortuneOrderSummaryView()) - ->setViewer($xviewer) - ->setOrder($order) - ->setPrintable($is_printable); - - $crumbs = null; - $curtain = null; - - $main = array(); - $tail = array(); - - require_celerity_resource('phortune-invoice-css'); - - if ($is_printable) { - $body_class = 'phortune-invoice-view'; - - $tail[] = $order_view; - } else { - $body_class = 'phortune-cart-page'; - - $curtain = $this->newCurtain($order); - - $crumbs = $this->newExternalCrumbs() - ->addTextCrumb($order->getObjectName()) - ->setBorder(true); - - $timeline = $this->buildTransactionTimeline($order) - ->setShouldTerminate(true); - - $main[] = $order_view; - $main[] = $timeline; - } - - $column_view = id(new PHUITwoColumnView()) - ->setMainColumn($main) - ->setFooter($tail); - - if ($curtain) { - $column_view->setCurtain($curtain); - } - - $page = $this->newPage() - ->addClass($body_class) - ->setTitle( - array( - $order->getObjectName(), - $order->getName(), - )) - ->appendChild($column_view); - - if ($crumbs) { - $page->setCrumbs($crumbs); - } - - return $page; - } - - - private function newCurtain(PhortuneCart $order) { - $xviewer = $this->getExternalViewer(); - $email = $this->getAccountEmail(); - - $curtain = $this->newCurtainView($order); - - $print_uri = $email->getExternalOrderPrintURI($order); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Printable Version')) - ->setHref($print_uri) - ->setOpenInNewWindow(true) - ->setIcon('fa-print')); - - return $curtain; - } - -} diff --git a/src/applications/phortune/controller/external/PhortuneExternalOverviewController.php b/src/applications/phortune/controller/external/PhortuneExternalOverviewController.php deleted file mode 100644 --- a/src/applications/phortune/controller/external/PhortuneExternalOverviewController.php +++ /dev/null @@ -1,101 +0,0 @@ -getExternalViewer(); - $email = $this->getAccountEmail(); - $account = $email->getAccount(); - - $crumbs = $this->newExternalCrumbs() - ->addTextCrumb(pht('Viewing As "%s"', $email->getAddress())) - ->setBorder(true); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Invoices and Receipts: %s', $account->getName())) - ->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setIcon('fa-times') - ->setText(pht('Unsubscribe')) - ->setHref($email->getUnsubscribeURI()) - ->setWorkflow(true)); - - $external_view = $this->newExternalView(); - $invoices_view = $this->newInvoicesView(); - $receipts_view = $this->newReceiptsView(); - - $column_view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $external_view, - $invoices_view, - $receipts_view, - )); - - return $this->newPage() - ->setCrumbs($crumbs) - ->setTitle( - array( - pht('Invoices and Receipts'), - $account->getName(), - )) - ->appendChild($column_view); - } - - private function newInvoicesView() { - $xviewer = $this->getExternalViewer(); - $email = $this->getAccountEmail(); - $account = $email->getAccount(); - - $invoices = id(new PhortuneCartQuery()) - ->setViewer($xviewer) - ->withAccountPHIDs(array($account->getPHID())) - ->needPurchases(true) - ->withInvoices(true) - ->execute(); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Invoices')); - - $invoices_table = id(new PhortuneOrderTableView()) - ->setViewer($xviewer) - ->setAccountEmail($email) - ->setCarts($invoices) - ->setIsInvoices(true); - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($invoices_table); - } - - private function newReceiptsView() { - $xviewer = $this->getExternalViewer(); - $email = $this->getAccountEmail(); - $account = $email->getAccount(); - - $receipts = id(new PhortuneCartQuery()) - ->setViewer($xviewer) - ->withAccountPHIDs(array($account->getPHID())) - ->needPurchases(true) - ->withInvoices(false) - ->execute(); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Receipts')); - - $receipts_table = id(new PhortuneOrderTableView()) - ->setViewer($xviewer) - ->setAccountEmail($email) - ->setCarts($receipts); - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($receipts_table); - } - -} diff --git a/src/applications/phortune/controller/external/PhortuneExternalUnsubscribeController.php b/src/applications/phortune/controller/external/PhortuneExternalUnsubscribeController.php deleted file mode 100644 --- a/src/applications/phortune/controller/external/PhortuneExternalUnsubscribeController.php +++ /dev/null @@ -1,67 +0,0 @@ -getExternalViewer(); - $email = $this->getAccountEmail(); - $account = $email->getAccount(); - - $email_uri = $email->getExternalURI(); - - if ($request->isFormOrHisecPost()) { - $xactions = array(); - - $xactions[] = $email->getApplicationTransactionTemplate() - ->setTransactionType( - PhortuneAccountEmailStatusTransaction::TRANSACTIONTYPE) - ->setNewValue(PhortuneAccountEmailStatus::STATUS_UNSUBSCRIBED); - - $email->getApplicationTransactionEditor() - ->setActor($xviewer) - ->setActingAsPHID($email->getPHID()) - ->setContentSourceFromRequest($request) - ->setContinueOnMissingFields(true) - ->setContinueOnNoEffect(true) - ->setCancelURI($email_uri) - ->applyTransactions($email, $xactions); - - return id(new AphrontRedirectResponse())->setURI($email_uri); - } - - $email_display = phutil_tag( - 'strong', - array(), - $email->getAddress()); - - $account_display = phutil_tag( - 'strong', - array(), - $account->getName()); - - $submit = pht( - 'Permanently Unsubscribe (%s)', - $email->getAddress()); - - return $this->newDialog() - ->setTitle(pht('Permanently Unsubscribe')) - ->appendParagraph( - pht( - 'Permanently unsubscribe this email address (%s) from this '. - 'payment account (%s)?', - $email_display, - $account_display)) - ->appendParagraph( - pht( - 'You will no longer receive email and access links will no longer '. - 'function.')) - ->appendParagraph( - pht( - 'This action is permanent and can not be undone.')) - ->addCancelButton($email_uri) - ->addSubmitButton($submit); - - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantAddManagerController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantAddManagerController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantAddManagerController.php +++ /dev/null @@ -1,67 +0,0 @@ -getViewer(); - $merchant = $this->getMerchant(); - - $v_members = array(); - $e_members = null; - $merchant_uri = $merchant->getManagersURI(); - - if ($request->isFormOrHiSecPost()) { - $xactions = array(); - $v_members = $request->getArr('managerPHIDs'); - $type_edge = PhabricatorTransactions::TYPE_EDGE; - - $xactions[] = id(new PhortuneMerchantTransaction()) - ->setTransactionType($type_edge) - ->setMetadataValue( - 'edge:type', - PhortuneMerchantHasMemberEdgeType::EDGECONST) - ->setNewValue( - array( - '+' => array_fuse($v_members), - )); - - $editor = id(new PhortuneMerchantEditor()) - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnNoEffect(true); - - try { - $editor->applyTransactions($merchant, $xactions); - - return id(new AphrontRedirectResponse())->setURI($merchant_uri); - } catch (PhabricatorApplicationTransactionValidationException $ex) { - $validation_exception = $ex; - $e_members = $ex->getShortMessage($type_edge); - } - } - - $form = id(new AphrontFormView()) - ->setUser($viewer) - ->appendControl( - id(new AphrontFormTokenizerControl()) - ->setDatasource(new PhabricatorPeopleDatasource()) - ->setLabel(pht('New Managers')) - ->setName('managerPHIDs') - ->setValue($v_members) - ->setError($e_members)); - - return $this->newDialog() - ->setTitle(pht('Add New Managers')) - ->appendForm($form) - ->setWidth(AphrontDialogView::WIDTH_FORM) - ->addCancelButton($merchant_uri) - ->addSubmitButton(pht('Add Manager')); - - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantController.php +++ /dev/null @@ -1,82 +0,0 @@ -merchant = $merchant; - return $this; - } - - final protected function getMerchant() { - return $this->merchant; - } - - final protected function hasMerchant() { - return (bool)$this->merchant; - } - - final public function handleRequest(AphrontRequest $request) { - if ($this->shouldRequireMerchantEditCapability()) { - $response = $this->loadMerchantForEdit(); - } else { - $response = $this->loadMerchantForView(); - } - - if ($response) { - return $response; - } - - return $this->handleMerchantRequest($request); - } - - abstract protected function shouldRequireMerchantEditCapability(); - abstract protected function handleMerchantRequest(AphrontRequest $request); - - private function loadMerchantForEdit() { - return $this->loadMerchantWithCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )); - } - - private function loadMerchantForView() { - return $this->loadMerchantWithCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - )); - } - - private function loadMerchantWithCapabilities(array $capabilities) { - $viewer = $this->getViewer(); - $request = $this->getRequest(); - - $merchant_id = $request->getURIData('merchantID'); - if (!$merchant_id) { - throw new Exception( - pht( - 'Controller ("%s") extends controller "%s", but is reachable '. - 'with no "merchantID" in URI.', - get_class($this), - __CLASS__)); - } - - $merchant = id(new PhortuneMerchantQuery()) - ->setViewer($viewer) - ->withIDs(array($merchant_id)) - ->needProfileImage(true) - ->requireCapabilities($capabilities) - ->executeOne(); - if (!$merchant) { - return new Aphront404Response(); - } - - $this->setMerchant($merchant); - - return null; - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantDetailsController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantDetailsController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantDetailsController.php +++ /dev/null @@ -1,151 +0,0 @@ -getViewer(); - $id = $request->getURIData('id'); - - $merchant = $this->getMerchant(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Account Details')) - ->setBorder(true); - $header = $this->buildHeaderView(); - - $title = pht( - '%s %s', - $merchant->getObjectName(), - $merchant->getName()); - - $details = $this->buildDetailsView($merchant); - $curtain = $this->buildCurtainView($merchant); - - $timeline = $this->buildTransactionTimeline( - $merchant, - new PhortuneMerchantTransactionQuery()); - $timeline->setShouldTerminate(true); - - $navigation = $this->buildSideNavView('details'); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setCurtain($curtain) - ->setMainColumn(array( - $details, - $timeline, - )); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - - private function buildDetailsView(PhortuneMerchant $merchant) { - $viewer = $this->getViewer(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->setObject($merchant); - - $invoice_from = $merchant->getInvoiceEmail(); - if (!$invoice_from) { - $invoice_from = pht('No email address set'); - $invoice_from = phutil_tag('em', array(), $invoice_from); - } - $view->addProperty(pht('Invoice From'), $invoice_from); - - $description = $merchant->getDescription(); - if (strlen($description)) { - $description = new PHUIRemarkupView($viewer, $description); - $view->addSectionHeader( - pht('Description'), - PHUIPropertyListView::ICON_SUMMARY); - $view->addTextContent($description); - } - - $contact_info = $merchant->getContactInfo(); - if (strlen($contact_info)) { - $contact_info = new PHUIRemarkupView($viewer, $contact_info); - $view->addSectionHeader( - pht('Contact Information'), - PHUIPropertyListView::ICON_SUMMARY); - $view->addTextContent($contact_info); - } - - $footer_info = $merchant->getInvoiceFooter(); - if (strlen($footer_info)) { - $footer_info = new PHUIRemarkupView($viewer, $footer_info); - $view->addSectionHeader( - pht('Invoice Footer'), - PHUIPropertyListView::ICON_SUMMARY); - $view->addTextContent($footer_info); - } - - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Details')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->appendChild($view); - } - - private function buildCurtainView(PhortuneMerchant $merchant) { - $viewer = $this->getRequest()->getUser(); - $id = $merchant->getID(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $merchant, - PhabricatorPolicyCapability::CAN_EDIT); - - $curtain = $this->newCurtainView($merchant); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Edit Merchant')) - ->setIcon('fa-pencil') - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit) - ->setHref($this->getApplicationURI("merchant/edit/{$id}/"))); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Edit Logo')) - ->setIcon('fa-picture-o') - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit) - ->setHref($this->getApplicationURI("merchant/{$id}/picture/edit/"))); - - $member_phids = $merchant->getMemberPHIDs(); - $handles = $viewer->loadHandles($member_phids); - - $member_list = id(new PHUIObjectItemListView()) - ->setSimple(true); - - foreach ($member_phids as $member_phid) { - $image_uri = $handles[$member_phid]->getImageURI(); - $image_href = $handles[$member_phid]->getURI(); - $person = $handles[$member_phid]; - - $member = id(new PHUIObjectItemView()) - ->setImageURI($image_uri) - ->setHref($image_href) - ->setHeader($person->getFullName()); - - $member_list->addItem($member); - } - - $curtain->newPanel() - ->setHeaderText(pht('Managers')) - ->appendChild($member_list); - - return $curtain; - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantEditController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantEditController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantEditController.php +++ /dev/null @@ -1,11 +0,0 @@ -setController($this) - ->buildResponse(); - } -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantInvoiceCreateController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantInvoiceCreateController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantInvoiceCreateController.php +++ /dev/null @@ -1,265 +0,0 @@ -getUser(); - - $merchant = $this->loadMerchantAuthority(); - if (!$merchant) { - return new Aphront404Response(); - } - - $this->setMerchant($merchant); - $merchant_id = $merchant->getID(); - $cancel_uri = $this->getApplicationURI("/merchant/{$merchant_id}/"); - - // Load the user to invoice, or prompt the viewer to select one. - $target_user = null; - $user_phid = head($request->getArr('userPHID')); - if (!$user_phid) { - $user_phid = $request->getStr('userPHID'); - } - if ($user_phid) { - $target_user = id(new PhabricatorPeopleQuery()) - ->setViewer($viewer) - ->withPHIDs(array($user_phid)) - ->executeOne(); - } - - if (!$target_user) { - $form = id(new AphrontFormView()) - ->setUser($viewer) - ->appendRemarkupInstructions(pht('Choose a user to invoice.')) - ->appendControl( - id(new AphrontFormTokenizerControl()) - ->setLabel(pht('User')) - ->setDatasource(new PhabricatorPeopleDatasource()) - ->setName('userPHID') - ->setLimit(1)); - - return $this->newDialog() - ->setTitle(pht('Choose User')) - ->appendForm($form) - ->addCancelButton($cancel_uri) - ->addSubmitButton(pht('Continue')); - } - - // Load the account to invoice, or prompt the viewer to select one. - $target_account = null; - $account_phid = $request->getStr('accountPHID'); - if ($account_phid) { - $target_account = id(new PhortuneAccountQuery()) - ->setViewer($viewer) - ->withPHIDs(array($account_phid)) - ->withMemberPHIDs(array($target_user->getPHID())) - ->executeOne(); - } - - if (!$target_account) { - $accounts = id(new PhortuneAccountQuery()) - ->setViewer($viewer) - ->withMemberPHIDs(array($target_user->getPHID())) - ->execute(); - - $form = id(new AphrontFormView()) - ->setUser($viewer) - ->addHiddenInput('userPHID', $target_user->getPHID()) - ->appendRemarkupInstructions(pht('Choose which account to invoice.')) - ->appendControl( - id(new AphrontFormMarkupControl()) - ->setLabel(pht('User')) - ->setValue($viewer->renderHandle($target_user->getPHID()))) - ->appendControl( - id(new AphrontFormSelectControl()) - ->setLabel(pht('Account')) - ->setName('accountPHID') - ->setValue($account_phid) - ->setOptions(mpull($accounts, 'getName', 'getPHID'))); - - return $this->newDialog() - ->setTitle(pht('Choose Account')) - ->appendForm($form) - ->addCancelButton($cancel_uri) - ->addSubmitButton(pht('Continue')); - } - - - // Now we build the actual invoice. - $title = pht('New Invoice'); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->addTextCrumb($title); - - $v_title = $request->getStr('title'); - $e_title = true; - - $v_name = $request->getStr('name'); - $e_name = true; - - $v_cost = $request->getStr('cost'); - $e_cost = true; - - $v_desc = $request->getStr('description'); - - $v_quantity = 1; - $e_quantity = null; - - $errors = array(); - if ($request->isFormPost() && $request->getStr('invoice')) { - $v_quantity = $request->getStr('quantity'); - - $e_title = null; - $e_name = null; - $e_cost = null; - $e_quantity = null; - - if (!strlen($v_title)) { - $e_title = pht('Required'); - $errors[] = pht('You must title this invoice.'); - } - - if (!strlen($v_name)) { - $e_name = pht('Required'); - $errors[] = pht('You must provide a name for this purchase.'); - } - - if (!strlen($v_cost)) { - $e_cost = pht('Required'); - $errors[] = pht('You must provide a cost for this purchase.'); - } else { - try { - $v_currency = PhortuneCurrency::newFromUserInput( - $viewer, - $v_cost); - } catch (Exception $ex) { - $errors[] = $ex->getMessage(); - $e_cost = pht('Invalid'); - } - } - - if ((int)$v_quantity <= 0) { - $e_quantity = pht('Invalid'); - $errors[] = pht('Quantity must be a positive integer.'); - } - - if (!$errors) { - $unique = Filesystem::readRandomCharacters(16); - - $product = id(new PhortuneProductQuery()) - ->setViewer($target_user) - ->withClassAndRef('PhortuneAdHocProduct', $unique) - ->executeOne(); - - $cart_implementation = new PhortuneAdHocCart(); - - $cart = $target_account->newCart( - $target_user, - $cart_implementation, - $merchant); - - $cart - ->setMetadataValue('adhoc.title', $v_title) - ->setMetadataValue('adhoc.description', $v_desc); - - $purchase = $cart->newPurchase($target_user, $product) - ->setBasePriceAsCurrency($v_currency) - ->setQuantity((int)$v_quantity) - ->setMetadataValue('adhoc.name', $v_name) - ->save(); - - $cart - ->setIsInvoice(1) - ->save(); - - $cart->activateCart(); - $cart_id = $cart->getID(); - - $uri = "/merchant/{$merchant_id}/cart/{$cart_id}/"; - $uri = $this->getApplicationURI($uri); - - return id(new AphrontRedirectResponse())->setURI($uri); - } - } - - $form = id(new AphrontFormView()) - ->setUser($viewer) - ->addHiddenInput('userPHID', $target_user->getPHID()) - ->addHiddenInput('accountPHID', $target_account->getPHID()) - ->addHiddenInput('invoice', true) - ->appendControl( - id(new AphrontFormMarkupControl()) - ->setLabel(pht('User')) - ->setValue($viewer->renderHandle($target_user->getPHID()))) - ->appendControl( - id(new AphrontFormMarkupControl()) - ->setLabel(pht('Account')) - ->setValue($viewer->renderHandle($target_account->getPHID()))) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Invoice Title')) - ->setName('title') - ->setValue($v_title) - ->setError($e_title)) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Purchase Name')) - ->setName('name') - ->setValue($v_name) - ->setError($e_name)) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Purchase Cost')) - ->setName('cost') - ->setValue($v_cost) - ->setError($e_cost)) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Quantity')) - ->setName('quantity') - ->setValue($v_quantity) - ->setError($e_quantity)) - ->appendChild( - id(new AphrontFormTextAreaControl()) - ->setLabel(pht('Invoice Description')) - ->setName('description') - ->setValue($v_desc)) - ->appendChild( - id(new AphrontFormSubmitControl()) - ->addCancelButton($cancel_uri) - ->setValue(pht('Send Invoice'))); - - $box = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Details')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setFormErrors($errors) - ->setForm($form); - - $header = id(new PHUIHeaderView()) - ->setHeader($title) - ->setHeaderIcon('fa-plus-square'); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter(array( - $box, - )); - - $navigation = $this->buildSideNavView('orders'); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantListController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantListController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantListController.php +++ /dev/null @@ -1,29 +0,0 @@ -setController($this) - ->buildResponse(); - } - - protected function buildApplicationCrumbs() { - $crumbs = parent::buildApplicationCrumbs(); - - $can_create = $this->hasApplicationCapability( - PhortuneMerchantCapability::CAPABILITY); - - $crumbs->addAction( - id(new PHUIListItemView()) - ->setName(pht('Create Merchant')) - ->setHref($this->getApplicationURI('merchant/edit/')) - ->setIcon('fa-plus-square') - ->setWorkflow(!$can_create) - ->setDisabled(!$can_create)); - - return $crumbs; - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantManagersController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantManagersController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantManagersController.php +++ /dev/null @@ -1,90 +0,0 @@ -getViewer(); - $merchant = $this->getMerchant(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Managers')) - ->setBorder(true); - - $header = $this->buildHeaderView(); - $members = $this->buildMembersSection($merchant); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $members, - )); - - $navigation = $this->buildSideNavView('managers'); - - return $this->newPage() - ->setTitle(pht('Managers')) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - - private function buildMembersSection(PhortuneMerchant $merchant) { - $viewer = $this->getViewer(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $merchant, - PhabricatorPolicyCapability::CAN_EDIT); - - $id = $merchant->getID(); - - $add_uri = urisprintf( - 'merchant/%d/managers/new/', - $merchant->getID()); - $add_uri = $this->getApplicationURI($add_uri); - - $add = id(new PHUIButtonView()) - ->setTag('a') - ->setText(pht('New Manager')) - ->setIcon('fa-plus') - ->setWorkflow(true) - ->setDisabled(!$can_edit) - ->setHref($add_uri); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Merchant Account Managers')) - ->addActionLink($add); - - $list = id(new PHUIObjectItemListView()) - ->setUser($viewer); - - $member_phids = $merchant->getMemberPHIDs(); - $handles = $viewer->loadHandles($member_phids); - - foreach ($member_phids as $member_phid) { - $image_uri = $handles[$member_phid]->getImageURI(); - $image_href = $handles[$member_phid]->getURI(); - $person = $handles[$member_phid]; - - $member = id(new PHUIObjectItemView()) - ->setImageURI($image_uri) - ->setHref($image_href) - ->setHeader($person->getFullName()) - ->addAttribute(pht('Merchant Manager')); - - $list->addItem($member); - } - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setObjectList($list); - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantOrderListController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantOrderListController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantOrderListController.php +++ /dev/null @@ -1,55 +0,0 @@ -getViewer(); - $merchant = $this->getMerchant(); - - $engine = id(new PhortuneCartSearchEngine()) - ->setController($this) - ->setMerchant($merchant); - - $subscription_id = $request->getURIData('subscriptionID'); - if ($subscription_id) { - $subscription = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withIDs(array($subscription_id)) - ->executeOne(); - if (!$subscription) { - return new Aphront404Response(); - } - - $engine->setSubscription($subscription); - $this->subscription = $subscription; - } - - return $engine->buildResponse(); - } - - protected function buildApplicationCrumbs() { - $crumbs = parent::buildApplicationCrumbs(); - - $subscription = $this->subscription; - if ($subscription) { - $crumbs->addTextCrumb( - $subscription->getObjectName(), - $subscription->getURI()); - } else if ($this->hasMerchant()) { - $merchant = $this->getMerchant(); - - $crumbs->addTextCrumb(pht('Orders'), $merchant->getOrdersURI()); - } - - return $crumbs; - } - - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantOrdersController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantOrdersController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantOrdersController.php +++ /dev/null @@ -1,78 +0,0 @@ -getMerchant(); - $title = $merchant->getName(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Orders')) - ->setBorder(true); - - $header = $this->buildHeaderView(); - $order_history = $this->newRecentOrdersView($merchant, 100); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $order_history, - )); - - $navigation = $this->buildSideNavView('orders'); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - - private function newRecentOrdersView( - PhortuneMerchant $merchant, - $limit) { - - $viewer = $this->getViewer(); - - $carts = id(new PhortuneCartQuery()) - ->setViewer($viewer) - ->withMerchantPHIDs(array($merchant->getPHID())) - ->needPurchases(true) - ->withStatuses( - array( - PhortuneCart::STATUS_PURCHASING, - PhortuneCart::STATUS_CHARGED, - PhortuneCart::STATUS_HOLD, - PhortuneCart::STATUS_REVIEW, - PhortuneCart::STATUS_PURCHASED, - )) - ->setLimit($limit) - ->execute(); - - $orders_uri = $merchant->getOrderListURI(); - - $table = id(new PhortuneOrderTableView()) - ->setUser($viewer) - ->setCarts($carts); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Recent Orders')) - ->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setIcon('fa-list') - ->setHref($orders_uri) - ->setText(pht('View All Orders'))); - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($table); - } -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantOverviewController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantOverviewController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantOverviewController.php +++ /dev/null @@ -1,136 +0,0 @@ -getViewer(); - $merchant = $this->getMerchant(); - - $crumbs = $this->buildApplicationCrumbs() - ->setBorder(true); - - $header = $this->buildHeaderView(); - - $title = pht( - '%s %s', - $merchant->getObjectName(), - $merchant->getName()); - - $providers = id(new PhortunePaymentProviderConfigQuery()) - ->setViewer($viewer) - ->withMerchantPHIDs(array($merchant->getPHID())) - ->execute(); - - $details = $this->buildDetailsView($merchant, $providers); - $navigation = $this->buildSideNavView('overview'); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $details, - )); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - - private function buildDetailsView( - PhortuneMerchant $merchant, - array $providers) { - - $viewer = $this->getRequest()->getUser(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->setObject($merchant); - - $status_view = new PHUIStatusListView(); - - $have_any = false; - $any_test = false; - foreach ($providers as $provider_config) { - $provider = $provider_config->buildProvider(); - if ($provider->isEnabled()) { - $have_any = true; - } - if (!$provider->isAcceptingLivePayments()) { - $any_test = true; - } - } - - if ($have_any) { - $status_view->addItem( - id(new PHUIStatusItemView()) - ->setIcon(PHUIStatusItemView::ICON_ACCEPT, 'green') - ->setTarget(pht('Accepts Payments')) - ->setNote(pht('This merchant can accept payments.'))); - - if ($any_test) { - $status_view->addItem( - id(new PHUIStatusItemView()) - ->setIcon(PHUIStatusItemView::ICON_WARNING, 'yellow') - ->setTarget(pht('Test Mode')) - ->setNote(pht('This merchant is accepting test payments.'))); - } else { - $status_view->addItem( - id(new PHUIStatusItemView()) - ->setIcon(PHUIStatusItemView::ICON_ACCEPT, 'green') - ->setTarget(pht('Live Mode')) - ->setNote(pht('This merchant is accepting live payments.'))); - } - } else if ($providers) { - $status_view->addItem( - id(new PHUIStatusItemView()) - ->setIcon(PHUIStatusItemView::ICON_REJECT, 'red') - ->setTarget(pht('No Enabled Providers')) - ->setNote( - pht( - 'All of the payment providers for this merchant are '. - 'disabled.'))); - } else { - $status_view->addItem( - id(new PHUIStatusItemView()) - ->setIcon(PHUIStatusItemView::ICON_WARNING, 'yellow') - ->setTarget(pht('No Providers')) - ->setNote( - pht( - 'This merchant does not have any payment providers configured '. - 'yet, so it can not accept payments. Add a provider.'))); - } - - $view->addProperty(pht('Status'), $status_view); - - $description = $merchant->getDescription(); - if (strlen($description)) { - $description = new PHUIRemarkupView($viewer, $description); - $view->addSectionHeader( - pht('Description'), - PHUIPropertyListView::ICON_SUMMARY); - $view->addTextContent($description); - } - - $contact_info = $merchant->getContactInfo(); - if (strlen($contact_info)) { - $contact_info = new PHUIRemarkupView($viewer, $contact_info); - $view->addSectionHeader( - pht('Contact Information'), - PHUIPropertyListView::ICON_SUMMARY); - $view->addTextContent($contact_info); - } - - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Details')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->appendChild($view); - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantPictureController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantPictureController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantPictureController.php +++ /dev/null @@ -1,223 +0,0 @@ -getViewer(); - $merchant = $this->getMerchant(); - - $uri = $merchant->getDetailsURI(); - - $supported_formats = PhabricatorFile::getTransformableImageFormats(); - $e_file = true; - $errors = array(); - - if ($request->isFormPost()) { - $phid = $request->getStr('phid'); - $is_default = false; - if ($phid == PhabricatorPHIDConstants::PHID_VOID) { - $phid = null; - $is_default = true; - } else if ($phid) { - $file = id(new PhabricatorFileQuery()) - ->setViewer($viewer) - ->withPHIDs(array($phid)) - ->executeOne(); - } else { - if ($request->getFileExists('picture')) { - $file = PhabricatorFile::newFromPHPUpload( - $_FILES['picture'], - array( - 'authorPHID' => $viewer->getPHID(), - 'canCDN' => true, - )); - } else { - $e_file = pht('Required'); - $errors[] = pht( - 'You must choose a file when uploading a merchant logo.'); - } - } - - if (!$errors && !$is_default) { - if (!$file->isTransformableImage()) { - $e_file = pht('Not Supported'); - $errors[] = pht( - 'This server only supports these image formats: %s.', - implode(', ', $supported_formats)); - } else { - $xform = PhabricatorFileTransform::getTransformByKey( - PhabricatorFileThumbnailTransform::TRANSFORM_PROFILE); - $xformed = $xform->executeTransform($file); - } - } - - if (!$errors) { - if ($is_default) { - $new_value = null; - } else { - $xformed->attachToObject($merchant->getPHID()); - $new_value = $xformed->getPHID(); - } - - $xactions = array(); - $xactions[] = id(new PhortuneMerchantTransaction()) - ->setTransactionType( - PhortuneMerchantPictureTransaction::TRANSACTIONTYPE) - ->setNewValue($new_value); - - $editor = id(new PhortuneMerchantEditor()) - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnMissingFields(true) - ->setContinueOnNoEffect(true); - - $editor->applyTransactions($merchant, $xactions); - - return id(new AphrontRedirectResponse())->setURI($uri); - } - } - - $title = pht('Edit Logo'); - - $form = id(new PHUIFormLayoutView()) - ->setUser($viewer); - - $default_image = PhabricatorFile::loadBuiltin($viewer, 'merchant.png'); - - $images = array(); - - $current = $merchant->getProfileImagePHID(); - $has_current = false; - if ($current) { - $file = id(new PhabricatorFileQuery()) - ->setViewer($viewer) - ->withPHIDs(array($current)) - ->executeOne(); - if ($file) { - if ($file->isTransformableImage()) { - $has_current = true; - $images[$current] = array( - 'uri' => $file->getBestURI(), - 'tip' => pht('Current Picture'), - ); - } - } - } - - $images[PhabricatorPHIDConstants::PHID_VOID] = array( - 'uri' => $default_image->getBestURI(), - 'tip' => pht('Default Picture'), - ); - - require_celerity_resource('people-profile-css'); - Javelin::initBehavior('phabricator-tooltips', array()); - - $buttons = array(); - foreach ($images as $phid => $spec) { - $button = javelin_tag( - 'button', - array( - 'class' => 'button-grey profile-image-button', - 'sigil' => 'has-tooltip', - 'meta' => array( - 'tip' => $spec['tip'], - 'size' => 300, - ), - ), - phutil_tag( - 'img', - array( - 'height' => 50, - 'width' => 50, - 'src' => $spec['uri'], - ))); - - $button = array( - phutil_tag( - 'input', - array( - 'type' => 'hidden', - 'name' => 'phid', - 'value' => $phid, - )), - $button, - ); - - $button = phabricator_form( - $viewer, - array( - 'class' => 'profile-image-form', - 'method' => 'POST', - ), - $button); - - $buttons[] = $button; - } - - if ($has_current) { - $form->appendChild( - id(new AphrontFormMarkupControl()) - ->setLabel(pht('Current Logo')) - ->setValue(array_shift($buttons))); - } - - $form->appendChild( - id(new AphrontFormMarkupControl()) - ->setLabel(pht('Use Logo')) - ->setValue($buttons)); - - $form_box = id(new PHUIObjectBoxView()) - ->setHeaderText($title) - ->setFormErrors($errors) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setForm($form); - - $upload_form = id(new AphrontFormView()) - ->setUser($viewer) - ->setEncType('multipart/form-data') - ->appendChild( - id(new AphrontFormFileControl()) - ->setName('picture') - ->setLabel(pht('Upload Logo')) - ->setError($e_file) - ->setCaption( - pht('Supported formats: %s', implode(', ', $supported_formats)))) - ->appendChild( - id(new AphrontFormSubmitControl()) - ->addCancelButton($uri) - ->setValue(pht('Upload Logo'))); - - $upload_box = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Upload New Logo')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setForm($upload_form); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->addTextCrumb(pht('Edit Logo')); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Edit Logo')) - ->setHeaderIcon('fa-camera'); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter(array( - $form_box, - $upload_box, - )); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->appendChild( - array( - $view, - )); - - } -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantProfileController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantProfileController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantProfileController.php +++ /dev/null @@ -1,93 +0,0 @@ -getViewer(); - $merchant = $this->getMerchant(); - $title = $merchant->getName(); - - $header = id(new PHUIHeaderView()) - ->setHeader($title) - ->setUser($viewer) - ->setImage($merchant->getProfileImageURI()); - - return $header; - } - - protected function buildApplicationCrumbs() { - $crumbs = parent::buildApplicationCrumbs(); - - if ($this->hasMerchant()) { - $merchant = $this->getMerchant(); - $merchant_uri = $merchant->getURI(); - $crumbs->addTextCrumb($merchant->getName(), $merchant_uri); - } - - return $crumbs; - } - - protected function buildSideNavView($filter = null) { - $viewer = $this->getViewer(); - $merchant = $this->getMerchant(); - $id = $merchant->getID(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $merchant, - PhabricatorPolicyCapability::CAN_EDIT); - - $nav = id(new AphrontSideNavFilterView()) - ->setBaseURI(new PhutilURI($this->getApplicationURI())); - - $nav->addLabel(pht('Merchant')); - - $nav->newLink('overview') - ->setName(pht('Overview')) - ->setHref($merchant->getURI()) - ->setIcon('fa-building-o'); - - $nav->newLink('details') - ->setName(pht('Account Details')) - ->setHref($merchant->getDetailsURI()) - ->setIcon('fa-address-card-o') - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit); - - $nav->addLabel(pht('Payments')); - - $nav->newLink('providers') - ->setName(pht('Payment Providers')) - ->setHref($merchant->getPaymentProvidersURI()) - ->setIcon('fa-credit-card') - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit); - - $nav->newLink('orders') - ->setName(pht('Orders')) - ->setHref($merchant->getOrdersURI()) - ->setIcon('fa-shopping-bag') - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit); - - $nav->newLink('subscriptions') - ->setName(pht('Subscriptions')) - ->setHref($merchant->getSubscriptionsURI()) - ->setIcon('fa-retweet') - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit); - - $nav->addLabel(pht('Personnel')); - - $nav->newLink('managers') - ->setName(pht('Managers')) - ->setHref($merchant->getManagersURI()) - ->setIcon('fa-group'); - - $nav->selectFilter($filter); - - return $nav; - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantProviderDisableController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantProviderDisableController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantProviderDisableController.php +++ /dev/null @@ -1,75 +0,0 @@ -getViewer(); - $merchant = $this->getMerchant(); - - $id = $request->getURIData('providerID'); - - $provider_config = id(new PhortunePaymentProviderConfigQuery()) - ->setViewer($viewer) - ->withIDs(array($id)) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - if (!$provider_config) { - return new Aphront404Response(); - } - - $merchant_id = $merchant->getID(); - $cancel_uri = $provider_config->getURI(); - - $provider = $provider_config->buildProvider(); - - if ($request->isFormPost()) { - $new_status = !$provider_config->getIsEnabled(); - - $xactions = array(); - $xactions[] = id(new PhortunePaymentProviderConfigTransaction()) - ->setTransactionType( - PhortunePaymentProviderConfigTransaction::TYPE_ENABLE) - ->setNewValue($new_status); - - $editor = id(new PhortunePaymentProviderConfigEditor()) - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnNoEffect(true) - ->setContinueOnMissingFields(true); - - $editor->applyTransactions($provider_config, $xactions); - - return id(new AphrontRedirectResponse())->setURI($cancel_uri); - } - - if ($provider_config->getIsEnabled()) { - $title = pht('Disable Provider?'); - $body = pht( - 'If you disable this payment provider, users will no longer be able '. - 'to use it to make new payments.'); - $button = pht('Disable Provider'); - } else { - $title = pht('Enable Provider?'); - $body = pht( - 'If you enable this payment provider, users will be able to use it to '. - 'make new payments.'); - $button = pht('Enable Provider'); - } - - return $this->newDialog() - ->setTitle($title) - ->appendParagraph($body) - ->addSubmitButton($button) - ->addCancelButton($cancel_uri); - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantProviderEditController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantProviderEditController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantProviderEditController.php +++ /dev/null @@ -1,295 +0,0 @@ -getViewer(); - $merchant = $this->getMerchant(); - - $id = $request->getURIData('id'); - - if ($id) { - $provider_config = id(new PhortunePaymentProviderConfigQuery()) - ->setViewer($viewer) - ->withIDs(array($id)) - ->withMerchantPHIDs(array($merchant->getPHID())) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - if (!$provider_config) { - return new Aphront404Response(); - } - $is_new = false; - $is_choose_type = false; - - $merchant = $provider_config->getMerchant(); - $merchant_id = $merchant->getID(); - $cancel_uri = $provider_config->getURI(); - } else { - $merchant_id = $merchant->getID(); - - $current_providers = id(new PhortunePaymentProviderConfigQuery()) - ->setViewer($viewer) - ->withMerchantPHIDs(array($merchant->getPHID())) - ->execute(); - $current_map = mgroup($current_providers, 'getProviderClass'); - - $provider_config = PhortunePaymentProviderConfig::initializeNewProvider( - $merchant); - - $is_new = true; - - $classes = PhortunePaymentProvider::getAllProviders(); - $class = $request->getStr('class'); - if (empty($classes[$class]) || isset($current_map[$class])) { - return $this->processChooseClassRequest( - $request, - $merchant, - $current_map); - } - - $provider_config->setProviderClass($class); - $cancel_uri = $merchant->getPaymentProvidersURI(); - } - - $provider = $provider_config->buildProvider(); - - if ($is_new) { - $title = pht('Create Payment Provider'); - $button_text = pht('Create Provider'); - } else { - $title = pht( - 'Edit Payment Provider %d %s', - $provider_config->getID(), - $provider->getName()); - $button_text = pht('Save Changes'); - } - - $errors = array(); - if ($request->isFormPost() && $request->getStr('edit')) { - $form_values = $provider->readEditFormValuesFromRequest($request); - - list($errors, $issues, $xaction_values) = $provider->processEditForm( - $request, - $form_values); - - if (!$errors) { - // Find any secret fields which we're about to set to "*******" - // (indicating that the user did not edit the value) and remove them - // from the list of properties to update (so we don't write "******" - // to permanent configuration. - $secrets = $provider->getAllConfigurableSecretProperties(); - $secrets = array_fuse($secrets); - foreach ($xaction_values as $key => $value) { - if ($provider->isConfigurationSecret($value)) { - unset($xaction_values[$key]); - } - } - - if ($provider->canRunConfigurationTest()) { - $proxy = clone $provider; - $proxy_config = clone $provider_config; - $proxy_config->setMetadata( - $xaction_values + $provider_config->getMetadata()); - $proxy->setProviderConfig($proxy_config); - - try { - $proxy->runConfigurationTest(); - } catch (Exception $ex) { - $errors[] = pht('Unable to connect to payment provider:'); - $errors[] = $ex->getMessage(); - } - } - - if (!$errors) { - $template = id(new PhortunePaymentProviderConfigTransaction()) - ->setTransactionType( - PhortunePaymentProviderConfigTransaction::TYPE_PROPERTY); - - $xactions = array(); - - if (!$provider_config->getID()) { - $xactions[] = id(new PhortunePaymentProviderConfigTransaction()) - ->setTransactionType( - PhortunePaymentProviderConfigTransaction::TYPE_CREATE) - ->setNewValue(true); - } - - foreach ($xaction_values as $key => $value) { - $xactions[] = id(clone $template) - ->setMetadataValue( - PhortunePaymentProviderConfigTransaction::PROPERTY_KEY, - $key) - ->setNewValue($value); - } - - $editor = id(new PhortunePaymentProviderConfigEditor()) - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnNoEffect(true); - - $editor->applyTransactions($provider_config, $xactions); - - $next_uri = $provider_config->getURI(); - - return id(new AphrontRedirectResponse())->setURI($next_uri); - } - } - } else { - $form_values = $provider->readEditFormValuesFromProviderConfig(); - $issues = array(); - } - - $form = id(new AphrontFormView()) - ->setUser($viewer) - ->addHiddenInput('class', $provider_config->getProviderClass()) - ->addHiddenInput('edit', true) - ->appendChild( - id(new AphrontFormMarkupControl()) - ->setLabel(pht('Provider Type')) - ->setValue($provider->getName())); - - $provider->extendEditForm($request, $form, $form_values, $issues); - - $form - ->appendChild( - id(new AphrontFormSubmitControl()) - ->setValue($button_text) - ->addCancelButton($cancel_uri)) - ->appendChild( - id(new AphrontFormDividerControl())) - ->appendRemarkupInstructions( - $provider->getConfigureInstructions()); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->addTextCrumb($merchant->getName(), $cancel_uri); - $crumbs->setBorder(true); - - if ($is_new) { - $crumbs->addTextCrumb(pht('Add Provider')); - } else { - $crumbs->addTextCrumb( - pht('Edit Provider %d', $provider_config->getID())); - } - - $header = id(new PHUIHeaderView()) - ->setHeader($title) - ->setHeaderIcon('fa-pencil'); - - $box = id(new PHUIObjectBoxView()) - ->setFormErrors($errors) - ->setHeaderText(pht('Properties')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->appendChild($form); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter(array( - $box, - )); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->appendChild($view); - - } - - private function processChooseClassRequest( - AphrontRequest $request, - PhortuneMerchant $merchant, - array $current_map) { - - $viewer = $request->getUser(); - - $providers = PhortunePaymentProvider::getAllProviders(); - $v_class = null; - $errors = array(); - if ($request->isFormPost()) { - $v_class = $request->getStr('class'); - if (!isset($providers[$v_class])) { - $errors[] = pht('You must select a valid provider type.'); - } - } - - $merchant_id = $merchant->getID(); - $cancel_uri = $this->getApplicationURI("merchant/{$merchant_id}/"); - - if (!$v_class) { - $v_class = key($providers); - } - - $panel_classes = id(new AphrontFormRadioButtonControl()) - ->setName('class') - ->setValue($v_class); - - $providers = msort($providers, 'getConfigureName'); - foreach ($providers as $class => $provider) { - $disabled = isset($current_map[$class]); - if ($disabled) { - $description = phutil_tag( - 'em', - array(), - pht( - 'This merchant already has a payment account configured '. - 'with this provider.')); - } else { - $description = $provider->getConfigureDescription(); - } - - $panel_classes->addButton( - $class, - $provider->getConfigureName(), - $description, - null, - $disabled); - } - - $form = id(new AphrontFormView()) - ->setUser($viewer) - ->appendRemarkupInstructions( - pht('Choose the type of payment provider to add:')) - ->appendChild($panel_classes) - ->appendChild( - id(new AphrontFormSubmitControl()) - ->setValue(pht('Continue')) - ->addCancelButton($cancel_uri)); - - $title = pht('Add Payment Provider'); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->addTextCrumb($merchant->getName(), $cancel_uri); - $crumbs->addTextCrumb($title); - $crumbs->setBorder(true); - - $box = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Provider')) - ->setFormErrors($errors) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setForm($form); - - $header = id(new PHUIHeaderView()) - ->setHeader($title) - ->setHeaderIcon('fa-plus-square'); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter(array( - $box, - )); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->appendChild($view); - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantProviderViewController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantProviderViewController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantProviderViewController.php +++ /dev/null @@ -1,127 +0,0 @@ -getViewer(); - $merchant = $this->getMerchant(); - - $provider = id(new PhortunePaymentProviderConfigQuery()) - ->setViewer($viewer) - ->withIDs(array($request->getURIData('providerID'))) - ->executeOne(); - if (!$provider) { - return new Aphront404Response(); - } - - $provider_type = $provider->buildProvider(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb($merchant->getName(), $merchant->getURI()) - ->addTextCrumb( - pht('Payment Providers'), - $merchant->getPaymentProvidersURI()) - ->addTextCrumb($provider->getObjectName()) - ->setBorder(true); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Payment Provider: %s', $provider_type->getName())); - - $details = $this->newDetailsView($provider); - - $timeline = $this->buildTransactionTimeline( - $provider, - new PhortunePaymentProviderConfigTransactionQuery()); - $timeline->setShouldTerminate(true); - - $curtain = $this->buildCurtainView($provider); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setCurtain($curtain) - ->setMainColumn( - array( - $details, - $timeline, - )); - - return $this->newPage() - ->setTitle($provider->getObjectName()) - ->setCrumbs($crumbs) - ->appendChild($view); - } - - private function buildCurtainView(PhortunePaymentProviderConfig $provider) { - $viewer = $this->getViewer(); - $merchant = $this->getMerchant(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $provider, - PhabricatorPolicyCapability::CAN_EDIT); - - $edit_uri = $this->getApplicationURI( - urisprintf( - 'merchant/%d/providers/edit/%d/', - $merchant->getID(), - $provider->getID())); - - $disable_uri = $this->getApplicationURI( - urisprintf( - 'merchant/%d/providers/%d/disable/', - $merchant->getID(), - $provider->getID())); - - $curtain = $this->newCurtainView($provider); - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Edit Provider')) - ->setIcon('fa-pencil') - ->setHref($edit_uri) - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit)); - - $provider_type = $provider->buildProvider(); - - if ($provider_type->isEnabled()) { - $disable_icon = 'fa-times'; - $disable_name = pht('Disable Provider'); - } else { - $disable_icon = 'fa-check'; - $disable_name = pht('Enable Provider'); - } - - $curtain->addAction( - id(new PhabricatorActionView()) - ->setName($disable_name) - ->setIcon($disable_icon) - ->setHref($disable_uri) - ->setDisabled(!$can_edit) - ->setWorkflow(true)); - - return $curtain; - } - - private function newDetailsView(PhortunePaymentProviderConfig $provider) { - $viewer = $this->getViewer(); - - $view = id(new PHUIPropertyListView()) - ->setUser($viewer); - - $provider_type = $provider->buildProvider(); - - $view->addProperty(pht('Provider Type'), $provider_type->getName()); - - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Payment Provider Details')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->addPropertyList($view); - } - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantProvidersController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantProvidersController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantProvidersController.php +++ /dev/null @@ -1,116 +0,0 @@ -getViewer(); - $merchant = $this->getMerchant(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Payment Providers')) - ->setBorder(true); - - $header = $this->buildHeaderView(); - - $title = pht( - '%s %s', - $merchant->getObjectName(), - $merchant->getName()); - - $providers = id(new PhortunePaymentProviderConfigQuery()) - ->setViewer($viewer) - ->withMerchantPHIDs(array($merchant->getPHID())) - ->execute(); - - $provider_list = $this->buildProviderList( - $merchant, - $providers); - - $navigation = $this->buildSideNavView('providers'); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $provider_list, - )); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - - private function buildProviderList( - PhortuneMerchant $merchant, - array $providers) { - - $viewer = $this->getRequest()->getUser(); - $id = $merchant->getID(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $merchant, - PhabricatorPolicyCapability::CAN_EDIT); - - $provider_list = id(new PHUIObjectItemListView()) - ->setNoDataString(pht('This merchant has no payment providers.')); - - foreach ($providers as $provider_config) { - $provider = $provider_config->buildProvider(); - $provider_id = $provider_config->getID(); - - $item = id(new PHUIObjectItemView()) - ->setObjectName($provider_config->getObjectName()) - ->setHeader($provider->getName()) - ->setHref($provider_config->getURI()); - - if ($provider->isEnabled()) { - if ($provider->isAcceptingLivePayments()) { - $item->setStatusIcon('fa-check green'); - } else { - $item->setStatusIcon('fa-warning yellow'); - $item->addIcon('fa-exclamation-triangle', pht('Test Mode')); - } - - $item->addAttribute($provider->getConfigureProvidesDescription()); - } else { - $item->setDisabled(true); - $item->addAttribute( - phutil_tag('em', array(), pht('This payment provider is disabled.'))); - } - - $provider_list->addItem($item); - } - - $add_uri = urisprintf( - 'merchant/%d/providers/edit/', - $merchant->getID()); - $add_uri = $this->getApplicationURI($add_uri); - - $add_action = id(new PHUIButtonView()) - ->setTag('a') - ->setHref($add_uri) - ->setText(pht('Add Payment Provider')) - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit) - ->setIcon('fa-plus'); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Payment Providers')) - ->addActionLink($add_action); - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setObjectList($provider_list); - } - - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantSubscriptionListController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantSubscriptionListController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantSubscriptionListController.php +++ /dev/null @@ -1,50 +0,0 @@ -getViewer(); - $merchant = $this->getMerchant(); - - $engine = id(new PhortuneCartSearchEngine()) - ->setController($this) - ->setMerchant($merchant); - - $subscription_id = $request->getURIData('subscriptionID'); - if ($subscription_id) { - $subscription = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withIDs(array($subscription_id)) - ->executeOne(); - if (!$subscription) { - return new Aphront404Response(); - } - - $engine->setSubscription($subscription); - $this->subscription = $subscription; - } - - return $engine->buildResponse(); - } - - protected function buildApplicationCrumbs() { - $crumbs = parent::buildApplicationCrumbs(); - - if ($this->hasMerchant()) { - $merchant = $this->getMerchant(); - - $crumbs->addTextCrumb( - pht('Subscriptions'), - $merchant->getSubscriptionsURI()); - } - - return $crumbs; - } - - -} diff --git a/src/applications/phortune/controller/merchant/PhortuneMerchantSubscriptionsController.php b/src/applications/phortune/controller/merchant/PhortuneMerchantSubscriptionsController.php deleted file mode 100644 --- a/src/applications/phortune/controller/merchant/PhortuneMerchantSubscriptionsController.php +++ /dev/null @@ -1,68 +0,0 @@ -getMerchant(); - $title = $merchant->getName(); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Subscriptions')) - ->setBorder(true); - - $header = $this->buildHeaderView(); - - $subscriptions = $this->buildSubscriptionsSection($merchant); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $subscriptions, - )); - - $navigation = $this->buildSideNavView('subscriptions'); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->setNavigation($navigation) - ->appendChild($view); - } - - private function buildSubscriptionsSection(PhortuneMerchant $merchant) { - $viewer = $this->getViewer(); - - $subscriptions = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withMerchantPHIDs(array($merchant->getPHID())) - ->setLimit(25) - ->execute(); - - $subscriptions_uri = $merchant->getSubscriptionListURI(); - - $table = id(new PhortuneSubscriptionTableView()) - ->setUser($viewer) - ->setSubscriptions($subscriptions); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Subscriptions')) - ->addActionLink( - id(new PHUIButtonView()) - ->setTag('a') - ->setIcon('fa-list') - ->setHref($subscriptions_uri) - ->setText(pht('View All Subscriptions'))); - - return id(new PHUIObjectBoxView()) - ->setHeader($header) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($table); - } - -} diff --git a/src/applications/phortune/controller/paymentmethod/PhortunePaymentMethodCreateController.php b/src/applications/phortune/controller/paymentmethod/PhortunePaymentMethodCreateController.php deleted file mode 100644 --- a/src/applications/phortune/controller/paymentmethod/PhortunePaymentMethodCreateController.php +++ /dev/null @@ -1,462 +0,0 @@ -getViewer(); - - $account_id = $request->getURIData('accountID'); - $account = id(new PhortuneAccountQuery()) - ->setViewer($viewer) - ->withIDs(array($account_id)) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - if (!$account) { - return new Aphront404Response(); - } - - $cart_id = $request->getInt('cartID'); - $subscription_id = $request->getInt('subscriptionID'); - $merchant_id = $request->getInt('merchantID'); - - if ($cart_id) { - $cart = id(new PhortuneCartQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withIDs(array($cart_id)) - ->executeOne(); - if (!$cart) { - return new Aphront404Response(); - } - - $subscription_phid = $cart->getSubscriptionPHID(); - if ($subscription_phid) { - $subscription = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withPHIDs(array($subscription_phid)) - ->executeOne(); - if (!$subscription) { - return new Aphront404Response(); - } - } else { - $subscription = null; - } - - $merchant = $cart->getMerchant(); - - $cart_id = $cart->getID(); - $subscription_id = null; - $merchant_id = null; - - $next_uri = $cart->getCheckoutURI(); - } else if ($subscription_id) { - $subscription = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withIDs(array($subscription_id)) - ->executeOne(); - if (!$subscription) { - return new Aphront404Response(); - } - - $cart = null; - $merchant = $subscription->getMerchant(); - - $cart_id = null; - $subscription_id = $subscription->getID(); - $merchant_id = null; - - $next_uri = $subscription->getURI(); - } else if ($merchant_id) { - $merchant_phids = $account->getMerchantPHIDs(); - if ($merchant_phids) { - $merchant = id(new PhortuneMerchantQuery()) - ->setViewer($viewer) - ->withIDs(array($merchant_id)) - ->withPHIDs($merchant_phids) - ->executeOne(); - } else { - $merchant = null; - } - - if (!$merchant) { - return new Aphront404Response(); - } - - $cart = null; - $subscription = null; - - $cart_id = null; - $subscription_id = null; - $merchant_id = $merchant->getID(); - - $next_uri = $account->getPaymentMethodsURI(); - } else { - $next_uri = $account->getPaymentMethodsURI(); - - $merchant_phids = $account->getMerchantPHIDs(); - if ($merchant_phids) { - $merchants = id(new PhortuneMerchantQuery()) - ->setViewer($viewer) - ->withPHIDs($merchant_phids) - ->needProfileImage(true) - ->execute(); - } else { - $merchants = array(); - } - - if (!$merchants) { - return $this->newDialog() - ->setTitle(pht('No Merchants')) - ->appendParagraph( - pht( - 'You have not established a relationship with any merchants '. - 'yet. Create an order or subscription before adding payment '. - 'methods.')) - ->addCancelButton($next_uri); - } - - // If there's more than one merchant, ask the user to pick which one they - // want to pay. If there's only one, just pick it for them. - if (count($merchants) > 1) { - $menu = $this->newMerchantMenu($merchants); - - $form = id(new AphrontFormView()) - ->appendInstructions( - pht( - 'Choose the merchant you want to pay.')); - - return $this->newDialog() - ->setTitle(pht('Choose a Merchant')) - ->appendForm($form) - ->appendChild($menu) - ->addCancelButton($next_uri); - } - - $cart = null; - $subscription = null; - $merchant = head($merchants); - - $cart_id = null; - $subscription_id = null; - $merchant_id = $merchant->getID(); - } - - $providers = $this->loadCreatePaymentMethodProvidersForMerchant($merchant); - if (!$providers) { - throw new Exception( - pht( - 'There are no payment providers enabled that can add payment '. - 'methods.')); - } - - $state_params = array( - 'cartID' => $cart_id, - 'subscriptionID' => $subscription_id, - 'merchantID' => $merchant_id, - ); - $state_params = array_filter($state_params); - - $state_uri = new PhutilURI($request->getRequestURI()); - foreach ($state_params as $key => $value) { - $state_uri->replaceQueryParam($key, $value); - } - - $provider_id = $request->getInt('providerID'); - if (isset($providers[$provider_id])) { - $provider = $providers[$provider_id]; - } else { - // If there's more than one provider, ask the user to pick how they - // want to pay. If there's only one, just pick it. - if (count($providers) > 1) { - $menu = $this->newProviderMenu($providers, $state_uri); - - return $this->newDialog() - ->setTitle(pht('Choose a Payment Method')) - ->appendChild($menu) - ->addCancelButton($next_uri); - } - - $provider = head($providers); - } - - $provider_id = $provider->getProviderConfig()->getID(); - - $state_params['providerID'] = $provider_id; - - $errors = array(); - $display_exception = null; - if ($request->isFormPost() && $request->getBool('isProviderForm')) { - $method = id(new PhortunePaymentMethod()) - ->setAccountPHID($account->getPHID()) - ->setAuthorPHID($viewer->getPHID()) - ->setMerchantPHID($merchant->getPHID()) - ->setProviderPHID($provider->getProviderConfig()->getPHID()) - ->setStatus(PhortunePaymentMethod::STATUS_ACTIVE); - - // Limit the rate at which you can attempt to add payment methods. This - // is intended as a line of defense against using Phortune to validate a - // large list of stolen credit card numbers. - - PhabricatorSystemActionEngine::willTakeAction( - array($viewer->getPHID()), - new PhortuneAddPaymentMethodAction(), - 1); - - if (!$errors) { - $errors = $this->processClientErrors( - $provider, - $request->getStr('errors')); - } - - if (!$errors) { - $client_token_raw = $request->getStr('token'); - $client_token = null; - try { - $client_token = phutil_json_decode($client_token_raw); - } catch (PhutilJSONParserException $ex) { - $errors[] = pht( - 'There was an error decoding token information submitted by the '. - 'client. Expected a JSON-encoded token dictionary, received: %s.', - nonempty($client_token_raw, pht('nothing'))); - } - - if (!$provider->validateCreatePaymentMethodToken($client_token)) { - $errors[] = pht( - 'There was an error with the payment token submitted by the '. - 'client. Expected a valid dictionary, received: %s.', - $client_token_raw); - } - - if (!$errors) { - try { - $provider->createPaymentMethodFromRequest( - $request, - $method, - $client_token); - } catch (PhortuneDisplayException $exception) { - $display_exception = $exception; - } catch (Exception $ex) { - $errors = array( - pht('There was an error adding this payment method:'), - $ex->getMessage(), - ); - } - } - } - - if (!$errors && !$display_exception) { - $xactions = array(); - - $xactions[] = $method->getApplicationTransactionTemplate() - ->setTransactionType(PhabricatorTransactions::TYPE_CREATE) - ->setNewValue(true); - - $editor = id(new PhortunePaymentMethodEditor()) - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnNoEffect(true) - ->setContinueOnMissingFields(true); - - $editor->applyTransactions($method, $xactions); - - $next_uri = new PhutilURI($next_uri); - - // If we added this method on a cart flow, return to the cart to - // checkout with this payment method selected. - if ($cart_id) { - $next_uri->replaceQueryParam('paymentMethodID', $method->getID()); - } - - return id(new AphrontRedirectResponse())->setURI($next_uri); - } else { - if ($display_exception) { - $dialog_body = $display_exception->getView(); - } else { - $dialog_body = id(new PHUIInfoView()) - ->setErrors($errors); - } - - return $this->newDialog() - ->setTitle(pht('Error Adding Payment Method')) - ->appendChild($dialog_body) - ->addCancelButton($request->getRequestURI()); - } - } - - $form = $provider->renderCreatePaymentMethodForm($request, $errors); - - $form - ->setViewer($viewer) - ->setAction($request->getPath()) - ->setWorkflow(true) - ->addHiddenInput('isProviderForm', true) - ->appendChild( - id(new AphrontFormSubmitControl()) - ->setValue(pht('Add Payment Method')) - ->addCancelButton($next_uri)); - - foreach ($state_params as $key => $value) { - $form->addHiddenInput($key, $value); - } - - $box = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Method')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setForm($form); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb(pht('Add Payment Method')) - ->setBorder(true); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Add Payment Method')) - ->setHeaderIcon('fa-plus-square'); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $box, - )); - - return $this->newPage() - ->setTitle($provider->getPaymentMethodDescription()) - ->setCrumbs($crumbs) - ->appendChild($view); - - } - - private function processClientErrors( - PhortunePaymentProvider $provider, - $client_errors_raw) { - - $errors = array(); - - $client_errors = null; - try { - $client_errors = phutil_json_decode($client_errors_raw); - } catch (PhutilJSONParserException $ex) { - $errors[] = pht( - 'There was an error decoding error information submitted by the '. - 'client. Expected a JSON-encoded list of error codes, received: %s.', - nonempty($client_errors_raw, pht('nothing'))); - } - - foreach (array_unique($client_errors) as $key => $client_error) { - $client_errors[$key] = $provider->translateCreatePaymentMethodErrorCode( - $client_error); - } - - foreach (array_unique($client_errors) as $client_error) { - switch ($client_error) { - case PhortuneErrCode::ERR_CC_INVALID_NUMBER: - $message = pht( - 'The card number you entered is not a valid card number. Check '. - 'that you entered it correctly.'); - break; - case PhortuneErrCode::ERR_CC_INVALID_CVC: - $message = pht( - 'The CVC code you entered is not a valid CVC code. Check that '. - 'you entered it correctly. The CVC code is a 3-digit or 4-digit '. - 'numeric code which usually appears on the back of the card.'); - break; - case PhortuneErrCode::ERR_CC_INVALID_EXPIRY: - $message = pht( - 'The card expiration date is not a valid expiration date. Check '. - 'that you entered it correctly. You can not add an expired card '. - 'as a payment method.'); - break; - default: - $message = $provider->getCreatePaymentMethodErrorMessage( - $client_error); - if (!$message) { - $message = pht( - "There was an unexpected error ('%s') processing payment ". - "information.", - $client_error); - - phlog($message); - } - break; - } - - $errors[$client_error] = $message; - } - - return $errors; - } - - private function newMerchantMenu(array $merchants) { - assert_instances_of($merchants, 'PhortuneMerchant'); - - $request = $this->getRequest(); - $viewer = $this->getViewer(); - - $menu = id(new PHUIObjectItemListView()) - ->setUser($viewer) - ->setBig(true) - ->setFlush(true); - - foreach ($merchants as $merchant) { - $merchant_uri = id(new PhutilURI($request->getRequestURI())) - ->replaceQueryParam('merchantID', $merchant->getID()); - - $item = id(new PHUIObjectItemView()) - ->setObjectName($merchant->getObjectName()) - ->setHeader($merchant->getName()) - ->setHref($merchant_uri) - ->setClickable(true) - ->setImageURI($merchant->getProfileImageURI()); - - $menu->addItem($item); - } - - return $menu; - } - - private function newProviderMenu(array $providers, PhutilURI $state_uri) { - assert_instances_of($providers, 'PhortunePaymentProvider'); - - $request = $this->getRequest(); - $viewer = $this->getViewer(); - - $menu = id(new PHUIObjectItemListView()) - ->setUser($viewer) - ->setBig(true) - ->setFlush(true); - - foreach ($providers as $provider) { - $provider_id = $provider->getProviderConfig()->getID(); - - $provider_uri = id(clone $state_uri) - ->replaceQueryParam('providerID', $provider_id); - - $description = $provider->getPaymentMethodDescription(); - $icon_uri = $provider->getPaymentMethodIcon(); - $details = $provider->getPaymentMethodProviderDescription(); - - $icon = id(new PHUIIconView()) - ->setSpriteSheet(PHUIIconView::SPRITE_LOGIN) - ->setSpriteIcon($icon_uri); - - $item = id(new PHUIObjectItemView()) - ->setHeader($description) - ->setHref($provider_uri) - ->setClickable(true) - ->addAttribute($details) - ->setImageIcon($icon); - - $menu->addItem($item); - } - - return $menu; - } - -} diff --git a/src/applications/phortune/controller/paymentmethod/PhortunePaymentMethodDisableController.php b/src/applications/phortune/controller/paymentmethod/PhortunePaymentMethodDisableController.php deleted file mode 100644 --- a/src/applications/phortune/controller/paymentmethod/PhortunePaymentMethodDisableController.php +++ /dev/null @@ -1,96 +0,0 @@ -getViewer(); - $method_id = $request->getURIData('id'); - - $method = id(new PhortunePaymentMethodQuery()) - ->setViewer($viewer) - ->withIDs(array($method_id)) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - if (!$method) { - return new Aphront404Response(); - } - - if ($method->getStatus() == PhortunePaymentMethod::STATUS_DISABLED) { - return new Aphront400Response(); - } - - $subscription_id = $request->getInt('subscriptionID'); - if ($subscription_id) { - $subscription = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withIDs(array($subscription_id)) - ->withAccountPHIDs(array($method->getAccountPHID())) - ->withMerchantPHIDs(array($method->getMerchantPHID())) - ->executeOne(); - if (!$subscription) { - return new Aphront404Response(); - } - } else { - $subscription = null; - } - - $account = $method->getAccount(); - $account_id = $account->getID(); - $account_uri = $account->getPaymentMethodsURI(); - - if ($request->isFormPost()) { - $xactions = array(); - - $xactions[] = $method->getApplicationTransactionTemplate() - ->setTransactionType( - PhortunePaymentMethodStatusTransaction::TRANSACTIONTYPE) - ->setNewValue(PhortunePaymentMethod::STATUS_DISABLED); - - $editor = id(new PhortunePaymentMethodEditor()) - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnNoEffect(true) - ->setContinueOnMissingFields(true); - - $editor->applyTransactions($method, $xactions); - - if ($subscription) { - $next_uri = $subscription->getURI(); - } else { - $next_uri = $account_uri; - } - - return id(new AphrontRedirectResponse())->setURI($next_uri); - } - - $method_phid = $method->getPHID(); - $handles = $viewer->loadHandles( - array( - $method_phid, - )); - - $method_handle = $handles[$method_phid]; - $method_display = $method_handle->renderLink(); - $method_display = phutil_tag('strong', array(), $method_display); - - return $this->newDialog() - ->setTitle(pht('Remove Payment Method')) - ->addHiddenInput('subscriptionID', $subscription_id) - ->appendParagraph( - pht( - 'Remove the payment method %s from your account?', - $method_display)) - ->appendParagraph( - pht( - 'You will no longer be able to make payments using this payment '. - 'method.')) - ->addCancelButton($account_uri) - ->addSubmitButton(pht('Remove Payment Method')); - } - -} diff --git a/src/applications/phortune/controller/paymentmethod/PhortunePaymentMethodEditController.php b/src/applications/phortune/controller/paymentmethod/PhortunePaymentMethodEditController.php deleted file mode 100644 --- a/src/applications/phortune/controller/paymentmethod/PhortunePaymentMethodEditController.php +++ /dev/null @@ -1,100 +0,0 @@ -getViewer(); - $method_id = $request->getURIData('id'); - - $method = id(new PhortunePaymentMethodQuery()) - ->setViewer($viewer) - ->withIDs(array($method_id)) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - if (!$method) { - return new Aphront404Response(); - } - - $next_uri = $method->getURI(); - - $account = $method->getAccount(); - $v_name = $method->getName(); - - if ($request->isFormPost()) { - $v_name = $request->getStr('name'); - - $xactions = array(); - - $xactions[] = $method->getApplicationTransactionTemplate() - ->setTransactionType( - PhortunePaymentMethodNameTransaction::TRANSACTIONTYPE) - ->setNewValue($v_name); - - $editor = id(new PhortunePaymentMethodEditor()) - ->setActor($viewer) - ->setContentSourceFromRequest($request) - ->setContinueOnNoEffect(true) - ->setContinueOnMissingFields(true); - - $editor->applyTransactions($method, $xactions); - - return id(new AphrontRedirectResponse())->setURI($next_uri); - } - - $provider = $method->buildPaymentProvider(); - - $form = id(new AphrontFormView()) - ->setViewer($viewer) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Name')) - ->setName('name') - ->setValue($method->getName())) - ->appendChild( - id(new AphrontFormStaticControl()) - ->setLabel(pht('Details')) - ->setValue($method->getSummary())) - ->appendChild( - id(new AphrontFormStaticControl()) - ->setLabel(pht('Expires')) - ->setValue($method->getDisplayExpires())) - ->appendChild( - id(new AphrontFormSubmitControl()) - ->addCancelButton($next_uri) - ->setValue(pht('Save Changes'))); - - $box = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Payment Method')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setForm($form); - - $crumbs = $this->buildApplicationCrumbs() - ->addTextCrumb($account->getName(), $account->getURI()) - ->addTextCrumb(pht('Payment Methods'), $account->getPaymentMethodsURI()) - ->addTextCrumb($method->getObjectName(), $method->getURI()) - ->addTextCrumb(pht('Edit')) - ->setBorder(true); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Edit Payment Method')) - ->setHeaderIcon('fa-pencil'); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter( - array( - $box, - )); - - return $this->newPage() - ->setTitle(pht('Edit Payment Method')) - ->setCrumbs($crumbs) - ->appendChild($view); - } - -} diff --git a/src/applications/phortune/controller/product/PhortuneProductListController.php b/src/applications/phortune/controller/product/PhortuneProductListController.php deleted file mode 100644 --- a/src/applications/phortune/controller/product/PhortuneProductListController.php +++ /dev/null @@ -1,72 +0,0 @@ -getViewer(); - - $pager = new AphrontCursorPagerView(); - $pager->readFromRequest($request); - - $query = id(new PhortuneProductQuery()) - ->setViewer($viewer); - - $products = $query->executeWithCursorPager($pager); - - $title = pht('Product List'); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->addTextCrumb( - pht('Products'), - $this->getApplicationURI('product/')); - $crumbs->addAction( - id(new PHUIListItemView()) - ->setName(pht('Create Product')) - ->setHref($this->getApplicationURI('product/edit/')) - ->setIcon('fa-plus-square')); - $crumbs->setBorder(true); - - $product_list = id(new PHUIObjectItemListView()) - ->setUser($viewer) - ->setNoDataString(pht('No products.')); - - foreach ($products as $product) { - $view_uri = $this->getApplicationURI( - 'product/view/'.$product->getID().'/'); - - $price = $product->getPriceAsCurrency(); - - $item = id(new PHUIObjectItemView()) - ->setObjectName($product->getID()) - ->setHeader($product->getProductName()) - ->setHref($view_uri) - ->addAttribute($price->formatForDisplay()) - ->setImageIcon('fa-gift'); - - $product_list->addItem($item); - } - - $box = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Products')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setObjectList($product_list); - - $header = id(new PHUIHeaderView()) - ->setHeader(pht('Products')) - ->setHeaderIcon('fa-gift'); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter(array( - $box, - $pager, - )); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->appendChild($view); - - } - -} diff --git a/src/applications/phortune/controller/product/PhortuneProductViewController.php b/src/applications/phortune/controller/product/PhortuneProductViewController.php deleted file mode 100644 --- a/src/applications/phortune/controller/product/PhortuneProductViewController.php +++ /dev/null @@ -1,58 +0,0 @@ -getViewer(); - $id = $request->getURIData('id'); - - $product = id(new PhortuneProductQuery()) - ->setViewer($viewer) - ->withIDs(array($id)) - ->executeOne(); - if (!$product) { - return new Aphront404Response(); - } - - $title = pht('Product: %s', $product->getProductName()); - - $header = id(new PHUIHeaderView()) - ->setHeader($product->getProductName()) - ->setHeaderIcon('fa-gift'); - - $edit_uri = $this->getApplicationURI('product/edit/'.$product->getID().'/'); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->addTextCrumb( - pht('Products'), - $this->getApplicationURI('product/')); - $crumbs->addTextCrumb( - pht('#%d', $product->getID()), - $request->getRequestURI()); - $crumbs->setBorder(true); - - $properties = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->addProperty( - pht('Price'), - $product->getPriceAsCurrency()->formatForDisplay()); - - $object_box = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Details')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->addPropertyList($properties); - - $view = id(new PHUITwoColumnView()) - ->setHeader($header) - ->setFooter(array( - $object_box, - )); - - return $this->newPage() - ->setTitle($title) - ->setCrumbs($crumbs) - ->appendChild($view); - - } - -} diff --git a/src/applications/phortune/controller/provider/PhortuneProviderActionController.php b/src/applications/phortune/controller/provider/PhortuneProviderActionController.php deleted file mode 100644 --- a/src/applications/phortune/controller/provider/PhortuneProviderActionController.php +++ /dev/null @@ -1,81 +0,0 @@ -action = $action; - return $this; - } - - public function getAction() { - return $this->action; - } - - public function handleRequest(AphrontRequest $request) { - $viewer = $request->getViewer(); - $id = $request->getURIData('id'); - $this->setAction($request->getURIData('action')); - - $provider_config = id(new PhortunePaymentProviderConfigQuery()) - ->setViewer($viewer) - ->withIDs(array($id)) - ->executeOne(); - if (!$provider_config) { - return new Aphront404Response(); - } - - $provider = $provider_config->buildProvider(); - - if (!$provider->canRespondToControllerAction($this->getAction())) { - return new Aphront404Response(); - } - - $response = $provider->processControllerRequest($this, $request); - - if ($response instanceof AphrontResponse) { - return $response; - } - - $title = pht('Phortune'); - - return $this->newPage() - ->setTitle($title) - ->appendChild($response); - - } - - - public function loadCart($id) { - $request = $this->getRequest(); - $viewer = $request->getUser(); - - return id(new PhortuneCartQuery()) - ->setViewer($viewer) - ->needPurchases(true) - ->withIDs(array($id)) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - } - - public function loadActiveCharge(PhortuneCart $cart) { - $request = $this->getRequest(); - $viewer = $request->getUser(); - - return id(new PhortuneChargeQuery()) - ->setViewer($viewer) - ->withCartPHIDs(array($cart->getPHID())) - ->withStatuses( - array( - PhortuneCharge::STATUS_CHARGING, - )) - ->executeOne(); - } - -} diff --git a/src/applications/phortune/currency/PhortuneCurrency.php b/src/applications/phortune/currency/PhortuneCurrency.php deleted file mode 100644 --- a/src/applications/phortune/currency/PhortuneCurrency.php +++ /dev/null @@ -1,239 +0,0 @@ - 1) { - self::throwFormatException($string); - } - - if (substr_count($value, '$') > 1) { - self::throwFormatException($string); - } - - $value = str_replace('$', '', $value); - $value = (float)$value; - $value = (int)round(100 * $value); - - $currency = idx($matches, 2, $default); - switch ($currency) { - case 'USD': - break; - default: - throw new Exception(pht("Unsupported currency '%s'!", $currency)); - } - - return self::newFromValueAndCurrency($value, $currency); - } - - public static function newFromValueAndCurrency($value, $currency) { - $obj = new PhortuneCurrency(); - - $obj->value = $value; - $obj->currency = $currency; - - return $obj; - } - - public static function newFromList(array $list) { - assert_instances_of($list, __CLASS__); - - if (!$list) { - return self::newEmptyCurrency(); - } - - $total = null; - foreach ($list as $item) { - if ($total === null) { - $total = $item; - } else { - $total = $total->add($item); - } - } - - return $total; - } - - public function formatForDisplay() { - $bare = $this->formatBareValue(); - return '$'.$bare.' '.$this->currency; - } - - public function serializeForStorage() { - return $this->formatBareValue().' '.$this->currency; - } - - public function formatBareValue() { - switch ($this->currency) { - case 'USD': - return sprintf('%.02f', $this->value / 100); - default: - throw new Exception( - pht('Unsupported currency ("%s")!', $this->currency)); - } - } - - public function getValue() { - return $this->value; - } - - public function getCurrency() { - return $this->currency; - } - - public function getValueInUSDCents() { - if ($this->currency !== 'USD') { - throw new Exception(pht('Unexpected currency!')); - } - return $this->value; - } - - private static function throwFormatException($string) { - throw new Exception(pht("Invalid currency format ('%s').", $string)); - } - - private function throwUnlikeCurrenciesException(PhortuneCurrency $other) { - throw new Exception( - pht( - 'Trying to operate on unlike currencies ("%s" and "%s")!', - $this->currency, - $other->currency)); - } - - public function add(PhortuneCurrency $other) { - if ($this->currency !== $other->currency) { - $this->throwUnlikeCurrenciesException($other); - } - - $currency = new PhortuneCurrency(); - - // TODO: This should check for integer overflows, etc. - $currency->value = $this->value + $other->value; - $currency->currency = $this->currency; - - return $currency; - } - - public function subtract(PhortuneCurrency $other) { - if ($this->currency !== $other->currency) { - $this->throwUnlikeCurrenciesException($other); - } - - $currency = new PhortuneCurrency(); - - // TODO: This should check for integer overflows, etc. - $currency->value = $this->value - $other->value; - $currency->currency = $this->currency; - - return $currency; - } - - public function isEqualTo(PhortuneCurrency $other) { - if ($this->currency !== $other->currency) { - $this->throwUnlikeCurrenciesException($other); - } - - return ($this->value === $other->value); - } - - public function negate() { - $currency = new PhortuneCurrency(); - $currency->value = -$this->value; - $currency->currency = $this->currency; - return $currency; - } - - public function isPositive() { - return ($this->value > 0); - } - - public function isGreaterThan(PhortuneCurrency $other) { - if ($this->currency !== $other->currency) { - $this->throwUnlikeCurrenciesException($other); - } - return $this->value > $other->value; - } - - /** - * Assert that a currency value lies within a range. - * - * Throws if the value is not between the minimum and maximum, inclusive. - * - * In particular, currency values can be negative (to represent a debt or - * credit), so checking against zero may be useful to make sure a value - * has the expected sign. - * - * @param string|null Currency string, or null to skip check. - * @param string|null Currency string, or null to skip check. - * @return this - */ - public function assertInRange($minimum, $maximum) { - if ($minimum !== null && $maximum !== null) { - $min = self::newFromString($minimum); - $max = self::newFromString($maximum); - if ($min->value > $max->value) { - throw new Exception( - pht( - 'Range (%s - %s) is not valid!', - $min->formatForDisplay(), - $max->formatForDisplay())); - } - } - - if ($minimum !== null) { - $min = self::newFromString($minimum); - if ($min->value > $this->value) { - throw new Exception( - pht( - 'Minimum allowed amount is %s.', - $min->formatForDisplay())); - } - } - - if ($maximum !== null) { - $max = self::newFromString($maximum); - if ($max->value < $this->value) { - throw new Exception( - pht( - 'Maximum allowed amount is %s.', - $max->formatForDisplay())); - } - } - - return $this; - } - - -} diff --git a/src/applications/phortune/currency/PhortuneCurrencySerializer.php b/src/applications/phortune/currency/PhortuneCurrencySerializer.php deleted file mode 100644 --- a/src/applications/phortune/currency/PhortuneCurrencySerializer.php +++ /dev/null @@ -1,21 +0,0 @@ -serializeForStorage(); - } - -} diff --git a/src/applications/phortune/currency/__tests__/PhortuneCurrencyTestCase.php b/src/applications/phortune/currency/__tests__/PhortuneCurrencyTestCase.php deleted file mode 100644 --- a/src/applications/phortune/currency/__tests__/PhortuneCurrencyTestCase.php +++ /dev/null @@ -1,162 +0,0 @@ - '$0.00 USD', - '.01' => '$0.01 USD', - '1.00' => '$1.00 USD', - '-1.23' => '$-1.23 USD', - '50000.00' => '$50000.00 USD', - ); - - foreach ($map as $input => $expect) { - $this->assertEqual( - $expect, - PhortuneCurrency::newFromString($input, 'USD')->formatForDisplay(), - "newFromString({$input})->formatForDisplay()"); - } - } - - public function testCurrencyFormatBareValue() { - - // NOTE: The PayPal API depends on the behavior of the bare value format! - - $map = array( - '0' => '0.00', - '.01' => '0.01', - '1.00' => '1.00', - '-1.23' => '-1.23', - '50000.00' => '50000.00', - ); - - foreach ($map as $input => $expect) { - $this->assertEqual( - $expect, - PhortuneCurrency::newFromString($input, 'USD')->formatBareValue(), - "newFromString({$input})->formatBareValue()"); - } - } - - public function testCurrencyFromString() { - - $map = array( - '1.00' => 100, - '1.00 USD' => 100, - '$1.00' => 100, - '$1.00 USD' => 100, - '-$1.00 USD' => -100, - '$-1.00 USD' => -100, - '1' => 100, - '.99' => 99, - '$.99' => 99, - '-$.99' => -99, - '$-.99' => -99, - '$.99 USD' => 99, - ); - - foreach ($map as $input => $expect) { - $this->assertEqual( - $expect, - PhortuneCurrency::newFromString($input, 'USD')->getValue(), - "newFromString({$input})->getValue()"); - } - } - - public function testInvalidCurrencyFromString() { - $map = array( - '--1', - '$$1', - '1 JPY', - 'buck fiddy', - '1.2.3', - '1 dollar', - ); - - foreach ($map as $input) { - $caught = null; - try { - PhortuneCurrency::newFromString($input, 'USD'); - } catch (Exception $ex) { - $caught = $ex; - } - $this->assertTrue($caught instanceof Exception, "{$input}"); - } - } - - public function testCurrencyRanges() { - $value = PhortuneCurrency::newFromString('3.00 USD'); - - $value->assertInRange('2.00 USD', '4.00 USD'); - $value->assertInRange('2.00 USD', null); - $value->assertInRange(null, '4.00 USD'); - $value->assertInRange(null, null); - - $caught = null; - try { - $value->assertInRange('4.00 USD', null); - } catch (Exception $ex) { - $caught = $ex; - } - $this->assertTrue($caught instanceof Exception); - - $caught = null; - try { - $value->assertInRange(null, '2.00 USD'); - } catch (Exception $ex) { - $caught = $ex; - } - $this->assertTrue($caught instanceof Exception); - - $caught = null; - try { - // Minimum and maximum are reversed here. - $value->assertInRange('4.00 USD', '2.00 USD'); - } catch (Exception $ex) { - $caught = $ex; - } - $this->assertTrue($caught instanceof Exception); - - $credit = PhortuneCurrency::newFromString('-3.00 USD'); - $credit->assertInRange('-4.00 USD', '-2.00 USD'); - $credit->assertInRange('-4.00 USD', null); - $credit->assertInRange(null, '-2.00 USD'); - $credit->assertInRange(null, null); - - $caught = null; - try { - $credit->assertInRange('-2.00 USD', null); - } catch (Exception $ex) { - $caught = $ex; - } - $this->assertTrue($caught instanceof Exception); - - $caught = null; - try { - $credit->assertInRange(null, '-4.00 USD'); - } catch (Exception $ex) { - $caught = $ex; - } - $this->assertTrue($caught instanceof Exception); - } - - public function testAddCurrency() { - $cases = array( - array('0.00 USD', '0.00 USD', '$0.00 USD'), - array('1.00 USD', '1.00 USD', '$2.00 USD'), - array('1.23 USD', '9.77 USD', '$11.00 USD'), - ); - - foreach ($cases as $case) { - list($l, $r, $expect) = $case; - - $l = PhortuneCurrency::newFromString($l); - $r = PhortuneCurrency::newFromString($r); - $sum = $l->add($r); - - $this->assertEqual($expect, $sum->formatForDisplay()); - } - } - -} diff --git a/src/applications/phortune/edge/PhortuneAccountHasMemberEdgeType.php b/src/applications/phortune/edge/PhortuneAccountHasMemberEdgeType.php deleted file mode 100644 --- a/src/applications/phortune/edge/PhortuneAccountHasMemberEdgeType.php +++ /dev/null @@ -1,101 +0,0 @@ -getViewer()); - } - - protected function newObjectQuery() { - return new PhortuneAccountQuery(); - } - - protected function getObjectCreateTitleText($object) { - return pht('Create Payment Account'); - } - - protected function getObjectEditTitleText($object) { - return pht('Edit Account: %s', $object->getName()); - } - - protected function getObjectEditShortText($object) { - return $object->getName(); - } - - protected function getObjectCreateShortText() { - return pht('Create Account'); - } - - protected function getObjectName() { - return pht('Account'); - } - - protected function getObjectCreateCancelURI($object) { - return $this->getApplication()->getApplicationURI('/'); - } - - protected function getEditorURI() { - return $this->getApplication()->getApplicationURI('edit/'); - } - - protected function getObjectViewURI($object) { - if ($this->getIsCreate()) { - return $object->getURI(); - } else { - return $object->getDetailsURI(); - } - } - - protected function buildCustomEditFields($object) { - $viewer = $this->getViewer(); - - if ($this->getIsCreate()) { - $member_phids = array($viewer->getPHID()); - } else { - $member_phids = $object->getMemberPHIDs(); - } - - $fields = array( - id(new PhabricatorTextEditField()) - ->setKey('name') - ->setLabel(pht('Name')) - ->setDescription(pht('Account name.')) - ->setConduitTypeDescription(pht('New account name.')) - ->setTransactionType( - PhortuneAccountNameTransaction::TRANSACTIONTYPE) - ->setValue($object->getName()) - ->setIsRequired(true), - - id(new PhabricatorUsersEditField()) - ->setKey('managers') - ->setAliases(array('memberPHIDs', 'managerPHIDs')) - ->setLabel(pht('Managers')) - ->setUseEdgeTransactions(true) - ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) - ->setMetadataValue( - 'edge:type', - PhortuneAccountHasMemberEdgeType::EDGECONST) - ->setDescription(pht('Initial account managers.')) - ->setConduitDescription(pht('Set account managers.')) - ->setConduitTypeDescription(pht('New list of managers.')) - ->setInitialValue($object->getMemberPHIDs()) - ->setValue($member_phids), - - id(new PhabricatorTextEditField()) - ->setKey('billingName') - ->setLabel(pht('Billing Name')) - ->setDescription(pht('Account name for billing purposes.')) - ->setConduitTypeDescription(pht('New account billing name.')) - ->setTransactionType( - PhortuneAccountBillingNameTransaction::TRANSACTIONTYPE) - ->setValue($object->getBillingName()), - - id(new PhabricatorTextAreaEditField()) - ->setKey('billingAddress') - ->setLabel(pht('Billing Address')) - ->setDescription(pht('Account billing address.')) - ->setConduitTypeDescription(pht('New account billing address.')) - ->setTransactionType( - PhortuneAccountBillingAddressTransaction::TRANSACTIONTYPE) - ->setValue($object->getBillingAddress()), - - ); - - return $fields; - - } - -} diff --git a/src/applications/phortune/editor/PhortuneAccountEditor.php b/src/applications/phortune/editor/PhortuneAccountEditor.php deleted file mode 100644 --- a/src/applications/phortune/editor/PhortuneAccountEditor.php +++ /dev/null @@ -1,82 +0,0 @@ -requireActor(); - - switch ($type) { - case PhabricatorTransactions::TYPE_EDGE: - foreach ($xactions as $xaction) { - switch ($xaction->getMetadataValue('edge:type')) { - case PhortuneAccountHasMemberEdgeType::EDGECONST: - $old = $object->getMemberPHIDs(); - $new = $this->getPHIDTransactionNewValue($xaction, $old); - - $old = array_fuse($old); - $new = array_fuse($new); - - foreach ($new as $new_phid) { - if (isset($old[$new_phid])) { - continue; - } - - $user = id(new PhabricatorPeopleQuery()) - ->setViewer($viewer) - ->withPHIDs(array($new_phid)) - ->executeOne(); - if (!$user) { - $error = new PhabricatorApplicationTransactionValidationError( - $type, - pht('Invalid'), - pht( - 'Account managers must be valid users, "%s" is not.', - $new_phid)); - $errors[] = $error; - continue; - } - } - - $actor_phid = $this->getActingAsPHID(); - if (isset($old[$actor_phid]) && !isset($new[$actor_phid])) { - $error = new PhabricatorApplicationTransactionValidationError( - $type, - pht('Invalid'), - pht('You can not remove yourself as an account manager.'), - $xaction); - $errors[] = $error; - } - break; - } - } - break; - } - return $errors; - } - -} diff --git a/src/applications/phortune/editor/PhortuneAccountEmailEditEngine.php b/src/applications/phortune/editor/PhortuneAccountEmailEditEngine.php deleted file mode 100644 --- a/src/applications/phortune/editor/PhortuneAccountEmailEditEngine.php +++ /dev/null @@ -1,114 +0,0 @@ -account = $account; - return $this; - } - - public function getAccount() { - return $this->account; - } - - public function getEngineName() { - return pht('Phortune Account Emails'); - } - - public function getEngineApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - - public function getSummaryHeader() { - return pht('Configure Phortune Account Email Forms'); - } - - public function getSummaryText() { - return pht( - 'Configure creation and editing forms for Phortune Account '. - 'Email Addresses.'); - } - - public function isEngineConfigurable() { - return false; - } - - protected function newEditableObject() { - $viewer = $this->getViewer(); - - $account = $this->getAccount(); - if (!$account) { - $account = new PhortuneAccount(); - } - - return PhortuneAccountEmail::initializeNewAddress( - $account, - $viewer->getPHID()); - } - - protected function newObjectQuery() { - return new PhortuneAccountEmailQuery(); - } - - protected function getObjectCreateTitleText($object) { - return pht('Add Email Address'); - } - - protected function getObjectEditTitleText($object) { - return pht('Edit Account Email: %s', $object->getAddress()); - } - - protected function getObjectEditShortText($object) { - return pht('%s', $object->getAddress()); - } - - protected function getObjectCreateShortText() { - return pht('Add Email Address'); - } - - protected function getObjectName() { - return pht('Account Email'); - } - - protected function getObjectCreateCancelURI($object) { - return $this->getAccount()->getEmailAddressesURI(); - } - - protected function getEditorURI() { - return $this->getApplication()->getApplicationURI('address/edit/'); - } - - protected function getObjectViewURI($object) { - return $object->getURI(); - } - - protected function buildCustomEditFields($object) { - $viewer = $this->getViewer(); - - if ($this->getIsCreate()) { - $address_field = id(new PhabricatorTextEditField()) - ->setTransactionType( - PhortuneAccountEmailAddressTransaction::TRANSACTIONTYPE) - ->setIsRequired(true); - } else { - $address_field = new PhabricatorStaticEditField(); - } - - $address_field - ->setKey('address') - ->setLabel(pht('Email Address')) - ->setDescription(pht('Email address.')) - ->setConduitTypeDescription(pht('New email address.')) - ->setValue($object->getAddress()); - - return array( - $address_field, - ); - } - -} diff --git a/src/applications/phortune/editor/PhortuneAccountEmailEditor.php b/src/applications/phortune/editor/PhortuneAccountEmailEditor.php deleted file mode 100644 --- a/src/applications/phortune/editor/PhortuneAccountEmailEditor.php +++ /dev/null @@ -1,36 +0,0 @@ -getAddress()), - null); - - throw new PhabricatorApplicationTransactionValidationException($errors); - } - -} diff --git a/src/applications/phortune/editor/PhortuneCartEditor.php b/src/applications/phortune/editor/PhortuneCartEditor.php deleted file mode 100644 --- a/src/applications/phortune/editor/PhortuneCartEditor.php +++ /dev/null @@ -1,347 +0,0 @@ -invoiceIssues = $invoice_issues; - return $this; - } - - public function getInvoiceIssues() { - return $this->invoiceIssues; - } - - public function isInvoice() { - return (bool)$this->invoiceIssues; - } - - public function getEditorApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - - public function getEditorObjectsDescription() { - return pht('Phortune Carts'); - } - - public function getTransactionTypes() { - $types = parent::getTransactionTypes(); - - $types[] = PhortuneCartTransaction::TYPE_CREATED; - $types[] = PhortuneCartTransaction::TYPE_PURCHASED; - $types[] = PhortuneCartTransaction::TYPE_HOLD; - $types[] = PhortuneCartTransaction::TYPE_REVIEW; - $types[] = PhortuneCartTransaction::TYPE_CANCEL; - $types[] = PhortuneCartTransaction::TYPE_REFUND; - $types[] = PhortuneCartTransaction::TYPE_INVOICED; - - return $types; - } - - protected function getCustomTransactionOldValue( - PhabricatorLiskDAO $object, - PhabricatorApplicationTransaction $xaction) { - - switch ($xaction->getTransactionType()) { - case PhortuneCartTransaction::TYPE_CREATED: - case PhortuneCartTransaction::TYPE_PURCHASED: - case PhortuneCartTransaction::TYPE_HOLD: - case PhortuneCartTransaction::TYPE_REVIEW: - case PhortuneCartTransaction::TYPE_CANCEL: - case PhortuneCartTransaction::TYPE_REFUND: - case PhortuneCartTransaction::TYPE_INVOICED: - return null; - } - - return parent::getCustomTransactionOldValue($object, $xaction); - } - - protected function getCustomTransactionNewValue( - PhabricatorLiskDAO $object, - PhabricatorApplicationTransaction $xaction) { - - switch ($xaction->getTransactionType()) { - case PhortuneCartTransaction::TYPE_CREATED: - case PhortuneCartTransaction::TYPE_PURCHASED: - case PhortuneCartTransaction::TYPE_HOLD: - case PhortuneCartTransaction::TYPE_REVIEW: - case PhortuneCartTransaction::TYPE_CANCEL: - case PhortuneCartTransaction::TYPE_REFUND: - case PhortuneCartTransaction::TYPE_INVOICED: - return $xaction->getNewValue(); - } - - return parent::getCustomTransactionNewValue($object, $xaction); - } - - protected function applyCustomInternalTransaction( - PhabricatorLiskDAO $object, - PhabricatorApplicationTransaction $xaction) { - - switch ($xaction->getTransactionType()) { - case PhortuneCartTransaction::TYPE_CREATED: - case PhortuneCartTransaction::TYPE_PURCHASED: - case PhortuneCartTransaction::TYPE_HOLD: - case PhortuneCartTransaction::TYPE_REVIEW: - case PhortuneCartTransaction::TYPE_CANCEL: - case PhortuneCartTransaction::TYPE_REFUND: - case PhortuneCartTransaction::TYPE_INVOICED: - return; - } - - return parent::applyCustomInternalTransaction($object, $xaction); - } - - protected function applyCustomExternalTransaction( - PhabricatorLiskDAO $object, - PhabricatorApplicationTransaction $xaction) { - - switch ($xaction->getTransactionType()) { - case PhortuneCartTransaction::TYPE_CREATED: - case PhortuneCartTransaction::TYPE_PURCHASED: - case PhortuneCartTransaction::TYPE_HOLD: - case PhortuneCartTransaction::TYPE_REVIEW: - case PhortuneCartTransaction::TYPE_CANCEL: - case PhortuneCartTransaction::TYPE_REFUND: - case PhortuneCartTransaction::TYPE_INVOICED: - return; - } - - return parent::applyCustomExternalTransaction($object, $xaction); - } - - protected function shouldSendMail( - PhabricatorLiskDAO $object, - array $xactions) { - return true; - } - - protected function buildMailTemplate(PhabricatorLiskDAO $object) { - $id = $object->getID(); - $name = $object->getName(); - - return id(new PhabricatorMetaMTAMail()) - ->setSubject(pht('Order %d: %s', $id, $name)); - } - - protected function buildMailBody( - PhabricatorLiskDAO $object, - array $xactions) { - - $body = parent::buildMailBody($object, $xactions); - - if ($this->isInvoice()) { - $issues = $this->getInvoiceIssues(); - foreach ($issues as $key => $issue) { - $issues[$key] = ' - '.$issue; - } - $issues = implode("\n", $issues); - - $overview = pht( - "Payment for this invoice could not be processed automatically:\n\n". - "%s", - $issues); - - $body->addRemarkupSection(null, $overview); - - $body->addLinkSection( - pht('PAY NOW'), - PhabricatorEnv::getProductionURI($object->getCheckoutURI())); - } - - $items = array(); - foreach ($object->getPurchases() as $purchase) { - $name = $purchase->getFullDisplayName(); - $price = $purchase->getTotalPriceAsCurrency()->formatForDisplay(); - - $items[] = "{$name} {$price}"; - } - - $body->addTextSection(pht('ORDER CONTENTS'), implode("\n", $items)); - - if ($this->isInvoice()) { - $subscription = id(new PhortuneSubscriptionQuery()) - ->setViewer($this->requireActor()) - ->withPHIDs(array($object->getSubscriptionPHID())) - ->executeOne(); - if ($subscription) { - $body->addLinkSection( - pht('SUBSCRIPTION'), - PhabricatorEnv::getProductionURI($subscription->getURI())); - } - } else { - $body->addLinkSection( - pht('ORDER DETAIL'), - PhabricatorEnv::getProductionURI($object->getDetailURI())); - } - - $account_uri = '/phortune/'.$object->getAccount()->getID().'/'; - $body->addLinkSection( - pht('ACCOUNT OVERVIEW'), - PhabricatorEnv::getProductionURI($account_uri)); - - return $body; - } - - protected function getMailTo(PhabricatorLiskDAO $object) { - $phids = array(); - - // Reload the cart to pull account information, in case we just created the - // object. - $cart = id(new PhortuneCartQuery()) - ->setViewer($this->requireActor()) - ->withPHIDs(array($object->getPHID())) - ->executeOne(); - - foreach ($cart->getAccount()->getMemberPHIDs() as $account_member) { - $phids[] = $account_member; - } - - return $phids; - } - - protected function getMailCC(PhabricatorLiskDAO $object) { - return array(); - } - - protected function getMailSubjectPrefix() { - return '[Phortune]'; - } - - protected function buildReplyHandler(PhabricatorLiskDAO $object) { - return id(new PhortuneCartReplyHandler()) - ->setMailReceiver($object); - } - - protected function willPublish(PhabricatorLiskDAO $object, array $xactions) { - // We need the purchases in order to build mail. - return id(new PhortuneCartQuery()) - ->setViewer($this->getActor()) - ->withIDs(array($object->getID())) - ->needPurchases(true) - ->executeOne(); - } - - protected function getCustomWorkerState() { - return array( - 'invoiceIssues' => $this->invoiceIssues, - ); - } - - protected function loadCustomWorkerState(array $state) { - $this->invoiceIssues = idx($state, 'invoiceIssues'); - return $this; - } - - protected function applyFinalEffects( - PhabricatorLiskDAO $object, - array $xactions) { - - $account = $object->getAccount(); - $merchant = $object->getMerchant(); - $account->writeMerchantEdge($merchant); - - return $xactions; - } - - protected function newAuxiliaryMail($object, array $xactions) { - $xviewer = PhabricatorUser::getOmnipotentUser(); - $account = $object->getAccount(); - - $addresses = id(new PhortuneAccountEmailQuery()) - ->setViewer($xviewer) - ->withAccountPHIDs(array($account->getPHID())) - ->withStatuses( - array( - PhortuneAccountEmailStatus::STATUS_ACTIVE, - )) - ->execute(); - - $messages = array(); - foreach ($addresses as $address) { - $message = $this->newExternalMail($address, $object, $xactions); - if ($message) { - $messages[] = $message; - } - } - - return $messages; - } - - private function newExternalMail( - PhortuneAccountEmail $email, - PhortuneCart $cart, - array $xactions) { - $xviewer = PhabricatorUser::getOmnipotentUser(); - $account = $cart->getAccount(); - - $id = $cart->getID(); - $name = $cart->getName(); - - $origin_user = id(new PhabricatorPeopleQuery()) - ->setViewer($xviewer) - ->withPHIDs(array($email->getAuthorPHID())) - ->executeOne(); - if (!$origin_user) { - return null; - } - - if ($this->isInvoice()) { - $subject = pht('[Invoice #%d] %s', $id, $name); - $order_header = pht('INVOICE DETAIL'); - } else { - $subject = pht('[Order #%d] %s', $id, $name); - $order_header = pht('ORDER DETAIL'); - } - - $body = id(new PhabricatorMetaMTAMailBody()) - ->setViewer($xviewer) - ->setContextObject($cart); - - $origin_username = $origin_user->getUsername(); - $origin_realname = $origin_user->getRealName(); - if (strlen($origin_realname)) { - $origin_display = pht('%s (%s)', $origin_username, $origin_realname); - } else { - $origin_display = pht('%s', $origin_username); - } - - $body->addRawSection( - pht( - 'This email address (%s) was added to a payment account (%s) '. - 'by %s.', - $email->getAddress(), - $account->getName(), - $origin_display)); - - $body->addLinkSection( - $order_header, - PhabricatorEnv::getProductionURI($email->getExternalOrderURI($cart))); - - $body->addLinkSection( - pht('FULL ORDER HISTORY'), - PhabricatorEnv::getProductionURI($email->getExternalURI())); - - $body->addLinkSection( - pht('UNSUBSCRIBE'), - PhabricatorEnv::getProductionURI($email->getUnsubscribeURI())); - - return id(new PhabricatorMetaMTAMail()) - ->setFrom($this->getActingAsPHID()) - ->setSubject($subject) - ->addRawTos( - array( - $email->getAddress(), - )) - ->setForceDelivery(true) - ->setIsBulk(true) - ->setSensitiveContent(true) - ->setBody($body->render()) - ->setHTMLBody($body->renderHTML()); - - } - - -} diff --git a/src/applications/phortune/editor/PhortuneMerchantEditEngine.php b/src/applications/phortune/editor/PhortuneMerchantEditEngine.php deleted file mode 100644 --- a/src/applications/phortune/editor/PhortuneMerchantEditEngine.php +++ /dev/null @@ -1,148 +0,0 @@ -getViewer()); - } - - protected function newObjectQuery() { - return new PhortuneMerchantQuery(); - } - - protected function getObjectCreateTitleText($object) { - return pht('Create New Merchant'); - } - - protected function getObjectEditTitleText($object) { - return pht('Edit Merchant: %s', $object->getName()); - } - - protected function getObjectEditShortText($object) { - return $object->getName(); - } - - protected function getObjectCreateShortText() { - return pht('Create Merchant'); - } - - protected function getObjectName() { - return pht('Merchant'); - } - - protected function getObjectCreateCancelURI($object) { - return $this->getApplication()->getApplicationURI('/'); - } - - protected function getEditorURI() { - return $this->getApplication()->getApplicationURI('edit/'); - } - - protected function getObjectViewURI($object) { - return $object->getDetailsURI(); - } - - public function isEngineConfigurable() { - return false; - } - - protected function getCreateNewObjectPolicy() { - return $this->getApplication()->getPolicy( - PhortuneMerchantCapability::CAPABILITY); - } - - protected function buildCustomEditFields($object) { - $viewer = $this->getViewer(); - - if ($this->getIsCreate()) { - $member_phids = array($viewer->getPHID()); - } else { - $member_phids = $object->getMemberPHIDs(); - } - - return array( - id(new PhabricatorTextEditField()) - ->setKey('name') - ->setLabel(pht('Name')) - ->setDescription(pht('Merchant name.')) - ->setConduitTypeDescription(pht('New Merchant name.')) - ->setIsRequired(true) - ->setTransactionType( - PhortuneMerchantNameTransaction::TRANSACTIONTYPE) - ->setValue($object->getName()), - - id(new PhabricatorUsersEditField()) - ->setKey('members') - ->setAliases(array('memberPHIDs', 'managerPHIDs')) - ->setLabel(pht('Managers')) - ->setUseEdgeTransactions(true) - ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) - ->setMetadataValue( - 'edge:type', - PhortuneMerchantHasMemberEdgeType::EDGECONST) - ->setDescription(pht('Initial merchant managers.')) - ->setConduitDescription(pht('Set merchant managers.')) - ->setConduitTypeDescription(pht('New list of managers.')) - ->setInitialValue($object->getMemberPHIDs()) - ->setValue($member_phids), - - id(new PhabricatorRemarkupEditField()) - ->setKey('description') - ->setLabel(pht('Description')) - ->setDescription(pht('Merchant description.')) - ->setConduitTypeDescription(pht('New merchant description.')) - ->setTransactionType( - PhortuneMerchantDescriptionTransaction::TRANSACTIONTYPE) - ->setValue($object->getDescription()), - - id(new PhabricatorRemarkupEditField()) - ->setKey('contactInfo') - ->setLabel(pht('Contact Info')) - ->setDescription(pht('Merchant contact information.')) - ->setConduitTypeDescription(pht('Merchant contact information.')) - ->setTransactionType( - PhortuneMerchantContactInfoTransaction::TRANSACTIONTYPE) - ->setValue($object->getContactInfo()), - - id(new PhabricatorTextEditField()) - ->setKey('invoiceEmail') - ->setLabel(pht('Invoice From Email')) - ->setDescription(pht('Email address invoices are sent from.')) - ->setConduitTypeDescription( - pht('Email address invoices are sent from.')) - ->setTransactionType( - PhortuneMerchantInvoiceEmailTransaction::TRANSACTIONTYPE) - ->setValue($object->getInvoiceEmail()), - - id(new PhabricatorRemarkupEditField()) - ->setKey('invoiceFooter') - ->setLabel(pht('Invoice Footer')) - ->setDescription(pht('Footer on invoice forms.')) - ->setConduitTypeDescription(pht('Footer on invoice forms.')) - ->setTransactionType( - PhortuneMerchantInvoiceFooterTransaction::TRANSACTIONTYPE) - ->setValue($object->getInvoiceFooter()), - - ); - } - -} diff --git a/src/applications/phortune/editor/PhortuneMerchantEditor.php b/src/applications/phortune/editor/PhortuneMerchantEditor.php deleted file mode 100644 --- a/src/applications/phortune/editor/PhortuneMerchantEditor.php +++ /dev/null @@ -1,59 +0,0 @@ -getMetadataValue('edge:type')) { - case PhortuneMerchantHasMemberEdgeType::EDGECONST: - $new = $xaction->getNewValue(); - $set = idx($new, '-', array()); - $actor_phid = $this->requireActor()->getPHID(); - foreach ($set as $phid) { - if ($actor_phid == $phid) { - $error = new PhabricatorApplicationTransactionValidationError( - $type, - pht('Invalid'), - pht('You can not remove yourself as an merchant manager.'), - $xaction); - $errors[] = $error; - } - } - break; - } - } - break; - } - return $errors; - } - -} diff --git a/src/applications/phortune/editor/PhortunePaymentMethodEditor.php b/src/applications/phortune/editor/PhortunePaymentMethodEditor.php deleted file mode 100644 --- a/src/applications/phortune/editor/PhortunePaymentMethodEditor.php +++ /dev/null @@ -1,18 +0,0 @@ -getTransactionType()) { - case PhortunePaymentProviderConfigTransaction::TYPE_CREATE: - return null; - case PhortunePaymentProviderConfigTransaction::TYPE_ENABLE: - return (int)$object->getIsEnabled(); - case PhortunePaymentProviderConfigTransaction::TYPE_PROPERTY: - $property_key = $xaction->getMetadataValue( - PhortunePaymentProviderConfigTransaction::PROPERTY_KEY); - return $object->getMetadataValue($property_key); - } - - return parent::getCustomTransactionOldValue($object, $xaction); - } - - protected function getCustomTransactionNewValue( - PhabricatorLiskDAO $object, - PhabricatorApplicationTransaction $xaction) { - - switch ($xaction->getTransactionType()) { - case PhortunePaymentProviderConfigTransaction::TYPE_CREATE: - case PhortunePaymentProviderConfigTransaction::TYPE_PROPERTY: - return $xaction->getNewValue(); - case PhortunePaymentProviderConfigTransaction::TYPE_ENABLE: - return (int)$xaction->getNewValue(); - } - - return parent::getCustomTransactionNewValue($object, $xaction); - } - - protected function applyCustomInternalTransaction( - PhabricatorLiskDAO $object, - PhabricatorApplicationTransaction $xaction) { - - switch ($xaction->getTransactionType()) { - case PhortunePaymentProviderConfigTransaction::TYPE_CREATE: - return; - case PhortunePaymentProviderConfigTransaction::TYPE_PROPERTY: - $property_key = $xaction->getMetadataValue( - PhortunePaymentProviderConfigTransaction::PROPERTY_KEY); - $object->setMetadataValue($property_key, $xaction->getNewValue()); - return; - case PhortunePaymentProviderConfigTransaction::TYPE_ENABLE: - return $object->setIsEnabled((int)$xaction->getNewValue()); - } - - return parent::applyCustomInternalTransaction($object, $xaction); - } - - protected function applyCustomExternalTransaction( - PhabricatorLiskDAO $object, - PhabricatorApplicationTransaction $xaction) { - - switch ($xaction->getTransactionType()) { - case PhortunePaymentProviderConfigTransaction::TYPE_CREATE: - case PhortunePaymentProviderConfigTransaction::TYPE_PROPERTY: - case PhortunePaymentProviderConfigTransaction::TYPE_ENABLE: - return; - } - - return parent::applyCustomExternalTransaction($object, $xaction); - } - -} diff --git a/src/applications/phortune/editor/PhortuneSubscriptionEditor.php b/src/applications/phortune/editor/PhortuneSubscriptionEditor.php deleted file mode 100644 --- a/src/applications/phortune/editor/PhortuneSubscriptionEditor.php +++ /dev/null @@ -1,18 +0,0 @@ -view = $view; - return $this; - } - - public function getView() { - return $this->view; - } - -} diff --git a/src/applications/phortune/mail/PhortuneCartReplyHandler.php b/src/applications/phortune/mail/PhortuneCartReplyHandler.php deleted file mode 100644 --- a/src/applications/phortune/mail/PhortuneCartReplyHandler.php +++ /dev/null @@ -1,16 +0,0 @@ -setName('invoice') - ->setSynopsis( - pht( - 'Invoices a subscription for a given billing period. This can '. - 'charge payment accounts twice.')) - ->setArguments( - array( - array( - 'name' => 'subscription', - 'param' => 'phid', - 'help' => pht('Subscription to invoice.'), - ), - array( - 'name' => 'now', - 'param' => 'time', - 'help' => pht( - 'Bill as though the current time is a specific time.'), - ), - array( - 'name' => 'last', - 'param' => 'time', - 'help' => pht('Set the start of the billing period.'), - ), - array( - 'name' => 'next', - 'param' => 'time', - 'help' => pht('Set the end of the billing period.'), - ), - array( - 'name' => 'auto-range', - 'help' => pht('Automatically use the current billing period.'), - ), - array( - 'name' => 'force', - 'help' => pht( - 'Skip the prompt warning you that this operation is '. - 'potentially dangerous.'), - ), - )); - } - - public function execute(PhutilArgumentParser $args) { - $console = PhutilConsole::getConsole(); - $viewer = $this->getViewer(); - - $subscription_phid = $args->getArg('subscription'); - if (!$subscription_phid) { - throw new PhutilArgumentUsageException( - pht( - 'Specify which subscription to invoice with %s.', - '--subscription')); - } - - $subscription = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withPHIDs(array($subscription_phid)) - ->needTriggers(true) - ->executeOne(); - if (!$subscription) { - throw new PhutilArgumentUsageException( - pht( - 'Unable to load subscription with PHID "%s".', - $subscription_phid)); - } - - $now = $args->getArg('now'); - $now = $this->parseTimeArgument($now); - if (!$now) { - $now = PhabricatorTime::getNow(); - } - - $time_guard = PhabricatorTime::pushTime($now, date_default_timezone_get()); - - $console->writeOut( - "%s\n", - pht( - 'Set current time to %s.', - phabricator_datetime(PhabricatorTime::getNow(), $viewer))); - - $auto_range = $args->getArg('auto-range'); - $last_arg = $args->getArg('last'); - $next_arg = $args->getArg('next'); - - if (!$auto_range && !$last_arg && !$next_arg) { - throw new PhutilArgumentUsageException( - pht( - 'Specify a billing range with %s and %s, or use %s.', - '--last', - '--next', - '--auto-range')); - } else if (!$auto_range & (!$last_arg || !$next_arg)) { - throw new PhutilArgumentUsageException( - pht( - 'When specifying %s or %s, you must specify both arguments '. - 'to define the beginning and end of the billing range.', - '--last', - '--next')); - } else if (!$auto_range && ($last_arg && $next_arg)) { - $last_time = $this->parseTimeArgument($args->getArg('last')); - $next_time = $this->parseTimeArgument($args->getArg('next')); - } else if ($auto_range && ($last_arg || $next_arg)) { - throw new PhutilArgumentUsageException( - pht( - 'Use either %s or %s and %s to specify the '. - 'billing range, but not both.', - '--auto-range', - '--last', - '--next')); - } else { - $trigger = $subscription->getTrigger(); - $event = $trigger->getEvent(); - if (!$event) { - throw new PhutilArgumentUsageException( - pht( - 'Unable to calculate %s, this subscription has not been '. - 'scheduled for billing yet. Wait for the trigger daemon to '. - 'schedule the subscription.', - '--auto-range')); - } - $last_time = $event->getLastEventEpoch(); - $next_time = $event->getNextEventEpoch(); - } - - $console->writeOut( - "%s\n", - pht( - 'Preparing to invoice subscription "%s" from %s to %s.', - $subscription->getSubscriptionName(), - ($last_time - ? phabricator_datetime($last_time, $viewer) - : pht('subscription creation')), - phabricator_datetime($next_time, $viewer))); - - PhabricatorWorker::setRunAllTasksInProcess(true); - - if (!$args->getArg('force')) { - $console->writeOut( - "** %s **\n%s\n", - pht('WARNING'), - phutil_console_wrap( - pht( - 'Manually invoicing will double bill payment accounts if the '. - 'range overlaps an existing or future invoice. This script is '. - 'intended for testing and development, and should not be part '. - 'of routine billing operations. If you continue, you may '. - 'incorrectly overcharge customers.'))); - - if (!phutil_console_confirm(pht('Really invoice this subscription?'))) { - throw new Exception(pht('Declining to invoice.')); - } - } - - PhabricatorWorker::scheduleTask( - 'PhortuneSubscriptionWorker', - array( - 'subscriptionPHID' => $subscription->getPHID(), - 'trigger.last-epoch' => $last_time, - 'trigger.this-epoch' => $next_time, - 'manual' => true, - ), - array( - 'objectPHID' => $subscription->getPHID(), - )); - - return 0; - } - -} diff --git a/src/applications/phortune/management/PhabricatorPhortuneManagementWorkflow.php b/src/applications/phortune/management/PhabricatorPhortuneManagementWorkflow.php deleted file mode 100644 --- a/src/applications/phortune/management/PhabricatorPhortuneManagementWorkflow.php +++ /dev/null @@ -1,4 +0,0 @@ -pagesObject = $this->newChildObject($pages_object); - return $this; - } - - public function getPagesObject() { - return $this->pagesObject; - } - - protected function writeObject() { - $this->writeLine('/Type /Catalog'); - - $pages_object = $this->getPagesObject(); - if ($pages_object) { - $this->writeLine('/Pages %d 0 R', $pages_object->getObjectIndex()); - } - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFContentsObject.php b/src/applications/phortune/pdf/PhabricatorPDFContentsObject.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFContentsObject.php +++ /dev/null @@ -1,25 +0,0 @@ -rawContent = $raw_content; - return $this; - } - - public function getRawContent() { - return $this->rawContent; - } - - protected function writeObject() { - $data = $this->getRawContent(); - - $stream_length = $this->newStream($data); - - $this->writeLine('/Filter /FlateDecode /Length %d', $stream_length); - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFFontObject.php b/src/applications/phortune/pdf/PhabricatorPDFFontObject.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFFontObject.php +++ /dev/null @@ -1,14 +0,0 @@ -writeLine('/Type /Font'); - - $this->writeLine('/BaseFont /Helvetica-Bold'); - $this->writeLine('/Subtype /Type1'); - $this->writeLine('/Encoding /WinAnsiEncoding'); - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFFragment.php b/src/applications/phortune/pdf/PhabricatorPDFFragment.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFFragment.php +++ /dev/null @@ -1,38 +0,0 @@ -rope = new PhutilRope(); - - $this->writeFragment(); - - $rope = $this->rope; - $this->rope = null; - - return $rope->getAsString(); - } - - public function hasRefTableEntry() { - return false; - } - - abstract protected function writeFragment(); - - final protected function writeLine($pattern) { - $pattern = $pattern."\n"; - - $argv = func_get_args(); - $argv[0] = $pattern; - - $line = call_user_func_array('sprintf', $argv); - - $this->rope->append($line); - - return $this; - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFFragmentOffset.php b/src/applications/phortune/pdf/PhabricatorPDFFragmentOffset.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFFragmentOffset.php +++ /dev/null @@ -1,27 +0,0 @@ -fragment = $fragment; - return $this; - } - - public function getFragment() { - return $this->fragment; - } - - public function setOffset($offset) { - $this->offset = $offset; - return $this; - } - - public function getOffset() { - return $this->offset; - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFGenerator.php b/src/applications/phortune/pdf/PhabricatorPDFGenerator.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFGenerator.php +++ /dev/null @@ -1,59 +0,0 @@ -hasIterator) { - throw new Exception( - pht( - 'This generator has already emitted an iterator. You can not '. - 'modify the PDF document after you begin writing it.')); - } - - $this->objects[] = $object; - $index = count($this->objects); - - $object->setGenerator($this, $index); - - return $this; - } - - public function getObjects() { - return $this->objects; - } - - public function newIterator() { - $this->hasIterator = true; - return id(new PhabricatorPDFIterator()) - ->setGenerator($this); - } - - public function setInfoObject(PhabricatorPDFInfoObject $info_object) { - $this->addObject($info_object); - $this->infoObject = $info_object; - return $this; - } - - public function getInfoObject() { - return $this->infoObject; - } - - public function setCatalogObject( - PhabricatorPDFCatalogObject $catalog_object) { - $this->addObject($catalog_object); - $this->catalogObject = $catalog_object; - return $this; - } - - public function getCatalogObject() { - return $this->catalogObject; - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFHeadFragment.php b/src/applications/phortune/pdf/PhabricatorPDFHeadFragment.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFHeadFragment.php +++ /dev/null @@ -1,10 +0,0 @@ -writeLine('%s', '%PDF-1.3'); - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFInfoObject.php b/src/applications/phortune/pdf/PhabricatorPDFInfoObject.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFInfoObject.php +++ /dev/null @@ -1,11 +0,0 @@ -writeLine('/Producer (Phabricator 20190801)'); - $this->writeLine('/CreationDate (D:%s)', date('YmdHis')); - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFIterator.php b/src/applications/phortune/pdf/PhabricatorPDFIterator.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFIterator.php +++ /dev/null @@ -1,103 +0,0 @@ -generator) { - throw new Exception( - pht( - 'This iterator already has a generator. You can not modify the '. - 'generator for a given iterator.')); - } - - $this->generator = $generator; - - return $this; - } - - public function getGenerator() { - if (!$this->generator) { - throw new Exception( - pht( - 'This PDF iterator has no associated PDF generator.')); - } - - return $this->generator; - } - - public function getFragmentOffsets() { - return $this->fragmentOffsets; - } - - public function current() { - return $this->fragmentBytes; - } - - public function key() { - return $this->framgentKey; - } - - public function next() { - $this->fragmentKey++; - - if (!$this->valid()) { - return; - } - - $fragment = $this->fragments[$this->fragmentKey]; - - $this->fragmentOffsets[] = id(new PhabricatorPDFFragmentOffset()) - ->setFragment($fragment) - ->setOffset($this->byteLength); - - $bytes = $fragment->getAsBytes(); - - $this->fragmentBytes = $bytes; - $this->byteLength += strlen($bytes); - } - - public function rewind() { - if ($this->hasRewound) { - throw new Exception( - pht( - 'PDF iterators may not be rewound. Create a new iterator to emit '. - 'another PDF.')); - } - - $generator = $this->getGenerator(); - $objects = $generator->getObjects(); - - $this->fragments = array(); - $this->fragments[] = new PhabricatorPDFHeadFragment(); - - foreach ($objects as $object) { - $this->fragments[] = $object; - } - - $this->fragments[] = id(new PhabricatorPDFTailFragment()) - ->setIterator($this); - - $this->hasRewound = true; - - $this->fragmentKey = -1; - $this->byteLength = 0; - - $this->next(); - } - - public function valid() { - return isset($this->fragments[$this->fragmentKey]); - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFObject.php b/src/applications/phortune/pdf/PhabricatorPDFObject.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFObject.php +++ /dev/null @@ -1,95 +0,0 @@ -writeLine('%d 0 obj', $this->getObjectIndex()); - $this->writeLine('<<'); - $this->writeObject(); - $this->writeLine('>>'); - - $streams = $this->streams; - $this->streams = array(); - foreach ($streams as $stream) { - $this->writeLine('stream'); - $this->writeLine('%s', $stream); - $this->writeLine('endstream'); - } - - $this->writeLine('endobj'); - } - - final public function setGenerator( - PhabricatorPDFGenerator $generator, - $index) { - - if ($this->getGenerator()) { - throw new Exception( - pht( - 'This PDF object is already registered with a PDF generator. You '. - 'can not register an object with more than one generator.')); - } - - $this->generator = $generator; - $this->objectIndex = $index; - - foreach ($this->getChildren() as $child) { - $generator->addObject($child); - } - - return $this; - } - - final public function getGenerator() { - return $this->generator; - } - - final public function getObjectIndex() { - if (!$this->objectIndex) { - throw new Exception( - pht( - 'Trying to get index for object ("%s") which has not been '. - 'registered with a generator.', - get_class($this))); - } - - return $this->objectIndex; - } - - final protected function newChildObject(PhabricatorPDFObject $object) { - if ($this->generator) { - throw new Exception( - pht( - 'Trying to add a new PDF Object child after already registering '. - 'the object with a generator.')); - } - - $this->children[] = $object; - return $object; - } - - private function getChildren() { - return $this->children; - } - - abstract protected function writeObject(); - - final protected function newStream($raw_data) { - $stream_data = gzcompress($raw_data); - - $this->streams[] = $stream_data; - - return strlen($stream_data); - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFPageObject.php b/src/applications/phortune/pdf/PhabricatorPDFPageObject.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFPageObject.php +++ /dev/null @@ -1,48 +0,0 @@ -pagesObject = $pages; - return $this; - } - - public function setContentsObject(PhabricatorPDFContentsObject $contents) { - $this->contentsObject = $this->newChildObject($contents); - return $this; - } - - public function setResourcesObject(PhabricatorPDFResourcesObject $resources) { - $this->resourcesObject = $this->newChildObject($resources); - return $this; - } - - protected function writeObject() { - $this->writeLine('/Type /Page'); - - $pages_object = $this->pagesObject; - $contents_object = $this->contentsObject; - $resources_object = $this->resourcesObject; - - if ($pages_object) { - $pages_index = $pages_object->getObjectIndex(); - $this->writeLine('/Parent %d 0 R', $pages_index); - } - - if ($contents_object) { - $contents_index = $contents_object->getObjectIndex(); - $this->writeLine('/Contents %d 0 R', $contents_index); - } - - if ($resources_object) { - $resources_index = $resources_object->getObjectIndex(); - $this->writeLine('/Resources %d 0 R', $resources_index); - } - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFPagesObject.php b/src/applications/phortune/pdf/PhabricatorPDFPagesObject.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFPagesObject.php +++ /dev/null @@ -1,38 +0,0 @@ -setPagesObject($this); - $this->pageObjects[] = $this->newChildObject($page); - return $this; - } - - public function getPageObjects() { - return $this->pageObjects; - } - - protected function writeObject() { - $this->writeLine('/Type /Pages'); - - $page_objects = $this->getPageObjects(); - - $this->writeLine('/Count %d', count($page_objects)); - $this->writeLine('/MediaBox [%d %d %0.2f %0.2f]', 0, 0, 595.28, 841.89); - - if ($page_objects) { - $kids = array(); - foreach ($page_objects as $page_object) { - $kids[] = sprintf( - '%d 0 R', - $page_object->getObjectIndex()); - } - - $this->writeLine('/Kids [%s]', implode(' ', $kids)); - } - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFResourcesObject.php b/src/applications/phortune/pdf/PhabricatorPDFResourcesObject.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFResourcesObject.php +++ /dev/null @@ -1,28 +0,0 @@ -fontObjects[] = $this->newChildObject($font); - return $this; - } - - public function getFontObjects() { - return $this->fontObjects; - } - - protected function writeObject() { - $this->writeLine('/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); - - $fonts = $this->getFontObjects(); - foreach ($fonts as $font) { - $this->writeLine('/Font <<'); - $this->writeLine('/F%d %d 0 R', 1, $font->getObjectIndex()); - $this->writeLine('>>'); - } - } - -} diff --git a/src/applications/phortune/pdf/PhabricatorPDFTailFragment.php b/src/applications/phortune/pdf/PhabricatorPDFTailFragment.php deleted file mode 100644 --- a/src/applications/phortune/pdf/PhabricatorPDFTailFragment.php +++ /dev/null @@ -1,72 +0,0 @@ -iterator = $iterator; - return $this; - } - - public function getIterator() { - return $this->iterator; - } - - protected function writeFragment() { - $iterator = $this->getIterator(); - $generator = $iterator->getGenerator(); - $objects = $generator->getObjects(); - - $xref_offset = null; - - $this->writeLine('xref'); - $this->writeLine('0 %d', count($objects) + 1); - $this->writeLine('%010d %05d f ', 0, 0xFFFF); - - $offset_map = array(); - - $fragment_offsets = $iterator->getFragmentOffsets(); - foreach ($fragment_offsets as $fragment_offset) { - $fragment = $fragment_offset->getFragment(); - $offset = $fragment_offset->getOffset(); - - if ($fragment === $this) { - $xref_offset = $offset; - } - - if (!$fragment->hasRefTableEntry()) { - continue; - } - - $offset_map[$fragment->getObjectIndex()] = $offset; - } - - ksort($offset_map); - - foreach ($offset_map as $offset) { - $this->writeLine('%010d %05d n ', $offset, 0); - } - - $this->writeLine('trailer'); - $this->writeLine('<<'); - $this->writeLine('/Size %d', count($objects) + 1); - - $info_object = $generator->getInfoObject(); - if ($info_object) { - $this->writeLine('/Info %d 0 R', $info_object->getObjectIndex()); - } - - $catalog_object = $generator->getCatalogObject(); - if ($catalog_object) { - $this->writeLine('/Root %d 0 R', $catalog_object->getObjectIndex()); - } - - $this->writeLine('>>'); - $this->writeLine('startxref'); - $this->writeLine('%d', $xref_offset); - $this->writeLine('%s', '%%EOF'); - } - -} diff --git a/src/applications/phortune/phid/PhortuneAccountEmailPHIDType.php b/src/applications/phortune/phid/PhortuneAccountEmailPHIDType.php deleted file mode 100644 --- a/src/applications/phortune/phid/PhortuneAccountEmailPHIDType.php +++ /dev/null @@ -1,41 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $email = $objects[$phid]; - - $id = $email->getID(); - - $handle->setName($email->getObjectName()); - } - } - -} diff --git a/src/applications/phortune/phid/PhortuneAccountPHIDType.php b/src/applications/phortune/phid/PhortuneAccountPHIDType.php deleted file mode 100644 --- a/src/applications/phortune/phid/PhortuneAccountPHIDType.php +++ /dev/null @@ -1,41 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $account = $objects[$phid]; - - $handle - ->setName($account->getName()) - ->setURI($account->getURI()); - } - } - -} diff --git a/src/applications/phortune/phid/PhortuneCartPHIDType.php b/src/applications/phortune/phid/PhortuneCartPHIDType.php deleted file mode 100644 --- a/src/applications/phortune/phid/PhortuneCartPHIDType.php +++ /dev/null @@ -1,43 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $cart = $objects[$phid]; - - $id = $cart->getID(); - $name = $cart->getName(); - - $handle->setName($name); - $handle->setURI("/phortune/cart/{$id}/"); - } - } - -} diff --git a/src/applications/phortune/phid/PhortuneChargePHIDType.php b/src/applications/phortune/phid/PhortuneChargePHIDType.php deleted file mode 100644 --- a/src/applications/phortune/phid/PhortuneChargePHIDType.php +++ /dev/null @@ -1,42 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $charge = $objects[$phid]; - - $id = $charge->getID(); - - $handle->setName(pht('Charge %d', $id)); - $handle->setURI("/phortune/charge/{$id}/"); - } - } - -} diff --git a/src/applications/phortune/phid/PhortuneMerchantPHIDType.php b/src/applications/phortune/phid/PhortuneMerchantPHIDType.php deleted file mode 100644 --- a/src/applications/phortune/phid/PhortuneMerchantPHIDType.php +++ /dev/null @@ -1,43 +0,0 @@ -withPHIDs($phids) - ->needProfileImage(true); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $merchant = $objects[$phid]; - - $handle - ->setName($merchant->getName()) - ->setURI($merchant->getURI()) - ->setImageURI($merchant->getProfileImageURI()); - } - } - -} diff --git a/src/applications/phortune/phid/PhortunePaymentMethodPHIDType.php b/src/applications/phortune/phid/PhortunePaymentMethodPHIDType.php deleted file mode 100644 --- a/src/applications/phortune/phid/PhortunePaymentMethodPHIDType.php +++ /dev/null @@ -1,41 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $method = $objects[$phid]; - - $handle - ->setName($method->getFullDisplayName()) - ->setURI($method->getURI()); - } - } - -} diff --git a/src/applications/phortune/phid/PhortunePaymentProviderPHIDType.php b/src/applications/phortune/phid/PhortunePaymentProviderPHIDType.php deleted file mode 100644 --- a/src/applications/phortune/phid/PhortunePaymentProviderPHIDType.php +++ /dev/null @@ -1,41 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $provider_config = $objects[$phid]; - - $id = $provider_config->getID(); - - $handle->setName($provider_config->buildProvider()->getName()); - } - } - -} diff --git a/src/applications/phortune/phid/PhortuneProductPHIDType.php b/src/applications/phortune/phid/PhortuneProductPHIDType.php deleted file mode 100644 --- a/src/applications/phortune/phid/PhortuneProductPHIDType.php +++ /dev/null @@ -1,42 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $product = $objects[$phid]; - - $id = $product->getID(); - - $handle->setName(pht('Product %d', $id)); - $handle->setURI("/phortune/product/{$id}/"); - } - } - -} diff --git a/src/applications/phortune/phid/PhortunePurchasePHIDType.php b/src/applications/phortune/phid/PhortunePurchasePHIDType.php deleted file mode 100644 --- a/src/applications/phortune/phid/PhortunePurchasePHIDType.php +++ /dev/null @@ -1,42 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $purchase = $objects[$phid]; - - $id = $purchase->getID(); - - $handle->setName($purchase->getFullDisplayName()); - $handle->setURI($purchase->getURI()); - } - } - -} diff --git a/src/applications/phortune/phid/PhortuneSubscriptionPHIDType.php b/src/applications/phortune/phid/PhortuneSubscriptionPHIDType.php deleted file mode 100644 --- a/src/applications/phortune/phid/PhortuneSubscriptionPHIDType.php +++ /dev/null @@ -1,41 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $subscription = $objects[$phid]; - - $handle - ->setName($subscription->getSubscriptionName()) - ->setURI($subscription->getURI()); - } - } - -} diff --git a/src/applications/phortune/product/PhortuneAdHocProduct.php b/src/applications/phortune/product/PhortuneAdHocProduct.php deleted file mode 100644 --- a/src/applications/phortune/product/PhortuneAdHocProduct.php +++ /dev/null @@ -1,42 +0,0 @@ - $ref) { - $product = new PhortuneAdHocProduct(); - $product->ref = $ref; - $results[$key] = $product; - } - - return $results; - } - - public function getRef() { - return $this->ref; - } - - public function getName(PhortuneProduct $product) { - return pht('Ad-Hoc Product'); - } - - public function getPurchaseName( - PhortuneProduct $product, - PhortunePurchase $purchase) { - - return coalesce( - $purchase->getMetadataValue('adhoc.name'), - $this->getName($product)); - } - - public function getPriceAsCurrency(PhortuneProduct $product) { - return PhortuneCurrency::newEmptyCurrency(); - } - -} diff --git a/src/applications/phortune/product/PhortuneProductImplementation.php b/src/applications/phortune/product/PhortuneProductImplementation.php deleted file mode 100644 --- a/src/applications/phortune/product/PhortuneProductImplementation.php +++ /dev/null @@ -1,43 +0,0 @@ -getName($product); - } - - public function didPurchaseProduct( - PhortuneProduct $product, - PhortunePurchase $purchase) { - return; - } - - public function didRefundProduct( - PhortuneProduct $product, - PhortunePurchase $purchase, - PhortuneCurrency $amount) { - return; - } - - public function getPurchaseURI( - PhortuneProduct $product, - PhortunePurchase $purchase) { - return null; - } - -} diff --git a/src/applications/phortune/product/PhortuneSubscriptionProduct.php b/src/applications/phortune/product/PhortuneSubscriptionProduct.php deleted file mode 100644 --- a/src/applications/phortune/product/PhortuneSubscriptionProduct.php +++ /dev/null @@ -1,108 +0,0 @@ -subscriptionPHID = $subscription_phid; - return $this; - } - - public function getSubscriptionPHID() { - return $this->subscriptionPHID; - } - - public function setSubscription(PhortuneSubscription $subscription) { - $this->subscription = $subscription; - return $this; - } - - public function getSubscription() { - return $this->subscription; - } - - public function setViewer(PhabricatorUser $viewer) { - $this->viewer = $viewer; - return $this; - } - - public function getViewer() { - return $this->viewer; - } - - public function getRef() { - return $this->getSubscriptionPHID(); - } - - public function getName(PhortuneProduct $product) { - return $this->getSubscription()->getSubscriptionName(); - } - - public function getPriceAsCurrency(PhortuneProduct $product) { - // Prices are calculated by the SubscriptionImplementation. - return PhortuneCurrency::newEmptyCurrency(); - } - - public function didPurchaseProduct( - PhortuneProduct $product, - PhortunePurchase $purchase) { - return $this->getSubscription()->didPurchaseProduct( - $product, - $purchase); - } - - public function didRefundProduct( - PhortuneProduct $product, - PhortunePurchase $purchase, - PhortuneCurrency $amount) { - // TODO: Callback the subscription. - return; - } - - public function getPurchaseName( - PhortuneProduct $product, - PhortunePurchase $purchase) { - return $this->getSubscription()->getPurchaseName( - $product, - $purchase); - } - - public function getPurchaseURI( - PhortuneProduct $product, - PhortunePurchase $purchase) { - return $this->getSubscription()->getPurchaseURI( - $product, - $purchase); - } - - public function loadImplementationsForRefs( - PhabricatorUser $viewer, - array $refs) { - - $subscriptions = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withPHIDs($refs) - ->execute(); - $subscriptions = mpull($subscriptions, null, 'getPHID'); - - $objects = array(); - foreach ($refs as $ref) { - $subscription = idx($subscriptions, $ref); - if (!$subscription) { - continue; - } - - $objects[] = id(new PhortuneSubscriptionProduct()) - ->setViewer($viewer) - ->setSubscriptionPHID($ref) - ->setSubscription($subscription); - } - - return $objects; - } - -} diff --git a/src/applications/phortune/provider/PhortunePayPalPaymentProvider.php b/src/applications/phortune/provider/PhortunePayPalPaymentProvider.php deleted file mode 100644 --- a/src/applications/phortune/provider/PhortunePayPalPaymentProvider.php +++ /dev/null @@ -1,507 +0,0 @@ -getProviderConfig()->getMetadataValue(self::PAYPAL_MODE); - return ($mode === 'live'); - } - - public function getName() { - return pht('PayPal'); - } - - public function getConfigureName() { - return pht('Add PayPal Payments Account'); - } - - public function getConfigureDescription() { - return pht( - 'Allows you to accept various payment instruments with a paypal.com '. - 'account.'); - } - - public function getConfigureProvidesDescription() { - return pht('This merchant accepts payments via PayPal.'); - } - - public function getConfigureInstructions() { - return pht( - "To configure PayPal, register or log into an existing account on ". - "[[https://paypal.com | paypal.com]] (for live payments) or ". - "[[https://sandbox.paypal.com | sandbox.paypal.com]] (for test ". - "payments). Once logged in:\n\n". - " - Navigate to {nav Tools > API Access}.\n". - " - Choose **View API Signature**.\n". - " - Copy the **API Username**, **API Password** and **Signature** ". - " into the fields above.\n\n". - "You can select whether the provider operates in test mode or ". - "accepts live payments using the **Mode** dropdown above.\n\n". - "You can either use `sandbox.paypal.com` to retrieve live credentials, ". - "or `paypal.com` to retrieve live credentials."); - } - - public function getAllConfigurableProperties() { - return array( - self::PAYPAL_API_USERNAME, - self::PAYPAL_API_PASSWORD, - self::PAYPAL_API_SIGNATURE, - self::PAYPAL_MODE, - ); - } - - public function getAllConfigurableSecretProperties() { - return array( - self::PAYPAL_API_PASSWORD, - self::PAYPAL_API_SIGNATURE, - ); - } - - public function processEditForm( - AphrontRequest $request, - array $values) { - - $errors = array(); - $issues = array(); - - if (!strlen($values[self::PAYPAL_API_USERNAME])) { - $errors[] = pht('PayPal API Username is required.'); - $issues[self::PAYPAL_API_USERNAME] = pht('Required'); - } - - if (!strlen($values[self::PAYPAL_API_PASSWORD])) { - $errors[] = pht('PayPal API Password is required.'); - $issues[self::PAYPAL_API_PASSWORD] = pht('Required'); - } - - if (!strlen($values[self::PAYPAL_API_SIGNATURE])) { - $errors[] = pht('PayPal API Signature is required.'); - $issues[self::PAYPAL_API_SIGNATURE] = pht('Required'); - } - - if (!strlen($values[self::PAYPAL_MODE])) { - $errors[] = pht('Mode is required.'); - $issues[self::PAYPAL_MODE] = pht('Required'); - } - - return array($errors, $issues, $values); - } - - public function extendEditForm( - AphrontRequest $request, - AphrontFormView $form, - array $values, - array $issues) { - - $form - ->appendChild( - id(new AphrontFormTextControl()) - ->setName(self::PAYPAL_API_USERNAME) - ->setValue($values[self::PAYPAL_API_USERNAME]) - ->setError(idx($issues, self::PAYPAL_API_USERNAME, true)) - ->setLabel(pht('Paypal API Username'))) - ->appendChild( - id(new AphrontFormTextControl()) - ->setName(self::PAYPAL_API_PASSWORD) - ->setValue($values[self::PAYPAL_API_PASSWORD]) - ->setError(idx($issues, self::PAYPAL_API_PASSWORD, true)) - ->setLabel(pht('Paypal API Password'))) - ->appendChild( - id(new AphrontFormTextControl()) - ->setName(self::PAYPAL_API_SIGNATURE) - ->setValue($values[self::PAYPAL_API_SIGNATURE]) - ->setError(idx($issues, self::PAYPAL_API_SIGNATURE, true)) - ->setLabel(pht('Paypal API Signature'))) - ->appendChild( - id(new AphrontFormSelectControl()) - ->setName(self::PAYPAL_MODE) - ->setValue($values[self::PAYPAL_MODE]) - ->setError(idx($issues, self::PAYPAL_MODE)) - ->setLabel(pht('Mode')) - ->setOptions( - array( - 'test' => pht('Test Mode'), - 'live' => pht('Live Mode'), - ))); - - return; - } - - public function canRunConfigurationTest() { - return true; - } - - public function runConfigurationTest() { - $result = $this - ->newPaypalAPICall() - ->setRawPayPalQuery('GetBalance', array()) - ->resolve(); - } - - public function getPaymentMethodDescription() { - return pht('Credit Card or PayPal Account'); - } - - public function getPaymentMethodIcon() { - return 'PayPal'; - } - - public function getPaymentMethodProviderDescription() { - return 'PayPal'; - } - - protected function executeCharge( - PhortunePaymentMethod $payment_method, - PhortuneCharge $charge) { - throw new Exception('!'); - } - - protected function executeRefund( - PhortuneCharge $charge, - PhortuneCharge $refund) { - - $transaction_id = $charge->getMetadataValue('paypal.transactionID'); - if (!$transaction_id) { - throw new Exception(pht('Charge has no transaction ID!')); - } - - $refund_amount = $refund->getAmountAsCurrency()->negate(); - $refund_currency = $refund_amount->getCurrency(); - $refund_value = $refund_amount->formatBareValue(); - - $params = array( - 'TRANSACTIONID' => $transaction_id, - 'REFUNDTYPE' => 'Partial', - 'AMT' => $refund_value, - 'CURRENCYCODE' => $refund_currency, - ); - - $result = $this - ->newPaypalAPICall() - ->setRawPayPalQuery('RefundTransaction', $params) - ->resolve(); - - $charge->setMetadataValue( - 'paypal.refundID', - $result['REFUNDTRANSACTIONID']); - } - - public function updateCharge(PhortuneCharge $charge) { - $transaction_id = $charge->getMetadataValue('paypal.transactionID'); - if (!$transaction_id) { - throw new Exception(pht('Charge has no transaction ID!')); - } - - $params = array( - 'TRANSACTIONID' => $transaction_id, - ); - - $result = $this - ->newPaypalAPICall() - ->setRawPayPalQuery('GetTransactionDetails', $params) - ->resolve(); - - $is_charge = false; - $is_fail = false; - switch ($result['PAYMENTSTATUS']) { - case 'Processed': - case 'Completed': - case 'Completed-Funds-Held': - $is_charge = true; - break; - case 'Partially-Refunded': - case 'Refunded': - case 'Reversed': - case 'Canceled-Reversal': - // TODO: Handle these. - return; - case 'In-Progress': - case 'Pending': - // TODO: Also handle these better? - return; - case 'Denied': - case 'Expired': - case 'Failed': - case 'None': - case 'Voided': - default: - $is_fail = true; - break; - } - - if ($charge->getStatus() == PhortuneCharge::STATUS_HOLD) { - $cart = $charge->getCart(); - - $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); - if ($is_charge) { - $cart->didApplyCharge($charge); - } else if ($is_fail) { - $cart->didFailCharge($charge); - } - unset($unguarded); - } - } - - private function getPaypalAPIUsername() { - return $this - ->getProviderConfig() - ->getMetadataValue(self::PAYPAL_API_USERNAME); - } - - private function getPaypalAPIPassword() { - return $this - ->getProviderConfig() - ->getMetadataValue(self::PAYPAL_API_PASSWORD); - } - - private function getPaypalAPISignature() { - return $this - ->getProviderConfig() - ->getMetadataValue(self::PAYPAL_API_SIGNATURE); - } - -/* -( One-Time Payments )-------------------------------------------------- */ - - public function canProcessOneTimePayments() { - return true; - } - -/* -( Controllers )-------------------------------------------------------- */ - - - public function canRespondToControllerAction($action) { - switch ($action) { - case 'checkout': - case 'charge': - case 'cancel': - return true; - } - return parent::canRespondToControllerAction(); - } - - public function processControllerRequest( - PhortuneProviderActionController $controller, - AphrontRequest $request) { - - $viewer = $request->getUser(); - - $cart = $controller->loadCart($request->getInt('cartID')); - if (!$cart) { - return new Aphront404Response(); - } - - $charge = $controller->loadActiveCharge($cart); - switch ($controller->getAction()) { - case 'checkout': - if ($charge) { - throw new Exception(pht('Cart is already charging!')); - } - break; - case 'charge': - case 'cancel': - if (!$charge) { - throw new Exception(pht('Cart is not charging yet!')); - } - break; - } - - switch ($controller->getAction()) { - case 'checkout': - $return_uri = $this->getControllerURI( - 'charge', - array( - 'cartID' => $cart->getID(), - )); - - $cancel_uri = $this->getControllerURI( - 'cancel', - array( - 'cartID' => $cart->getID(), - )); - - $price = $cart->getTotalPriceAsCurrency(); - - $charge = $cart->willApplyCharge($viewer, $this); - - $params = array( - 'PAYMENTREQUEST_0_AMT' => $price->formatBareValue(), - 'PAYMENTREQUEST_0_CURRENCYCODE' => $price->getCurrency(), - 'PAYMENTREQUEST_0_PAYMENTACTION' => 'Sale', - 'PAYMENTREQUEST_0_CUSTOM' => $charge->getPHID(), - 'PAYMENTREQUEST_0_DESC' => $cart->getName(), - - 'RETURNURL' => $return_uri, - 'CANCELURL' => $cancel_uri, - - // TODO: This should be cart-dependent if we eventually support - // physical goods. - 'NOSHIPPING' => '1', - ); - - $result = $this - ->newPaypalAPICall() - ->setRawPayPalQuery('SetExpressCheckout', $params) - ->resolve(); - - $params = array( - 'cmd' => '_express-checkout', - 'token' => $result['TOKEN'], - ); - - $uri = new PhutilURI( - 'https://www.sandbox.paypal.com/cgi-bin/webscr', - $params); - - $cart->setMetadataValue('provider.checkoutURI', (string)$uri); - $cart->save(); - - $charge->setMetadataValue('paypal.token', $result['TOKEN']); - $charge->save(); - - return id(new AphrontRedirectResponse()) - ->setIsExternal(true) - ->setURI($uri); - case 'charge': - if ($cart->getStatus() !== PhortuneCart::STATUS_PURCHASING) { - return id(new AphrontRedirectResponse()) - ->setURI($cart->getCheckoutURI()); - } - - $token = $request->getStr('token'); - - $params = array( - 'TOKEN' => $token, - ); - - $result = $this - ->newPaypalAPICall() - ->setRawPayPalQuery('GetExpressCheckoutDetails', $params) - ->resolve(); - - if ($result['CUSTOM'] !== $charge->getPHID()) { - throw new Exception( - pht('Paypal checkout does not match Phortune charge!')); - } - - if ($result['CHECKOUTSTATUS'] !== 'PaymentActionNotInitiated') { - return $controller->newDialog() - ->setTitle(pht('Payment Already Processed')) - ->appendParagraph( - pht( - 'The payment response for this charge attempt has already '. - 'been processed.')) - ->addCancelButton($cart->getCheckoutURI(), pht('Continue')); - } - - $price = $cart->getTotalPriceAsCurrency(); - - $params = array( - 'TOKEN' => $token, - 'PAYERID' => $result['PAYERID'], - - 'PAYMENTREQUEST_0_AMT' => $price->formatBareValue(), - 'PAYMENTREQUEST_0_CURRENCYCODE' => $price->getCurrency(), - 'PAYMENTREQUEST_0_PAYMENTACTION' => 'Sale', - ); - - $result = $this - ->newPaypalAPICall() - ->setRawPayPalQuery('DoExpressCheckoutPayment', $params) - ->resolve(); - - $transaction_id = $result['PAYMENTINFO_0_TRANSACTIONID']; - - $success = false; - $hold = false; - switch ($result['PAYMENTINFO_0_PAYMENTSTATUS']) { - case 'Processed': - case 'Completed': - case 'Completed-Funds-Held': - $success = true; - break; - case 'In-Progress': - case 'Pending': - // TODO: We can capture more information about this stuff. - $hold = true; - break; - case 'Denied': - case 'Expired': - case 'Failed': - case 'Partially-Refunded': - case 'Canceled-Reversal': - case 'None': - case 'Refunded': - case 'Reversed': - case 'Voided': - default: - // These are all failure states. - break; - } - - $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); - - $charge->setMetadataValue('paypal.transactionID', $transaction_id); - $charge->save(); - - if ($success) { - $cart->didApplyCharge($charge); - $response = id(new AphrontRedirectResponse())->setURI( - $cart->getCheckoutURI()); - } else if ($hold) { - $cart->didHoldCharge($charge); - - $response = $controller - ->newDialog() - ->setTitle(pht('Charge On Hold')) - ->appendParagraph( - pht('Your charge is on hold, for reasons?')) - ->addCancelButton($cart->getCheckoutURI(), pht('Continue')); - } else { - $cart->didFailCharge($charge); - - $response = $controller - ->newDialog() - ->setTitle(pht('Charge Failed')) - ->addCancelButton($cart->getCheckoutURI(), pht('Continue')); - } - unset($unguarded); - - return $response; - case 'cancel': - if ($cart->getStatus() === PhortuneCart::STATUS_PURCHASING) { - $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); - // TODO: Since the user cancelled this, we could conceivably just - // throw it away or make it more clear that it's a user cancel. - $cart->didFailCharge($charge); - unset($unguarded); - } - - return id(new AphrontRedirectResponse()) - ->setURI($cart->getCheckoutURI()); - } - - throw new Exception( - pht('Unsupported action "%s".', $controller->getAction())); - } - - private function newPaypalAPICall() { - if ($this->isAcceptingLivePayments()) { - $host = 'https://api-3t.paypal.com/nvp'; - } else { - $host = 'https://api-3t.sandbox.paypal.com/nvp'; - } - - return id(new PhutilPayPalAPIFuture()) - ->setHost($host) - ->setAPIUsername($this->getPaypalAPIUsername()) - ->setAPIPassword($this->getPaypalAPIPassword()) - ->setAPISignature($this->getPaypalAPISignature()); - } - - -} diff --git a/src/applications/phortune/provider/PhortunePaymentProvider.php b/src/applications/phortune/provider/PhortunePaymentProvider.php deleted file mode 100644 --- a/src/applications/phortune/provider/PhortunePaymentProvider.php +++ /dev/null @@ -1,295 +0,0 @@ -providerConfig = $provider_config; - return $this; - } - - public function getProviderConfig() { - return $this->providerConfig; - } - - /** - * Return a short name which identifies this provider. - */ - abstract public function getName(); - - -/* -( Configuring Providers )---------------------------------------------- */ - - - /** - * Return a human-readable provider name for use on the merchant workflow - * where a merchant owner adds providers. - */ - abstract public function getConfigureName(); - - - /** - * Return a human-readable provider description for use on the merchant - * workflow where a merchant owner adds providers. - */ - abstract public function getConfigureDescription(); - - abstract public function getConfigureInstructions(); - - abstract public function getConfigureProvidesDescription(); - - abstract public function getAllConfigurableProperties(); - - abstract public function getAllConfigurableSecretProperties(); - /** - * Read a dictionary of properties from the provider's configuration for - * use when editing the provider. - */ - public function readEditFormValuesFromProviderConfig() { - $properties = $this->getAllConfigurableProperties(); - $config = $this->getProviderConfig(); - - $secrets = $this->getAllConfigurableSecretProperties(); - $secrets = array_fuse($secrets); - - $map = array(); - foreach ($properties as $property) { - $map[$property] = $config->getMetadataValue($property); - if (isset($secrets[$property])) { - $map[$property] = $this->renderConfigurationSecret($map[$property]); - } - } - - return $map; - } - - - /** - * Read a dictionary of properties from a request for use when editing the - * provider. - */ - public function readEditFormValuesFromRequest(AphrontRequest $request) { - $properties = $this->getAllConfigurableProperties(); - - $map = array(); - foreach ($properties as $property) { - $map[$property] = $request->getStr($property); - } - - return $map; - } - - - abstract public function processEditForm( - AphrontRequest $request, - array $values); - - abstract public function extendEditForm( - AphrontRequest $request, - AphrontFormView $form, - array $values, - array $issues); - - protected function renderConfigurationSecret($value) { - if (phutil_nonempty_string($value)) { - return str_repeat('*', strlen($value)); - } - return ''; - } - - public function isConfigurationSecret($value) { - return preg_match('/^\*+\z/', trim($value)); - } - - abstract public function canRunConfigurationTest(); - - public function runConfigurationTest() { - throw new PhutilMethodNotImplementedException(); - } - - -/* -( Selecting Providers )------------------------------------------------ */ - - - public static function getAllProviders() { - return id(new PhutilClassMapQuery()) - ->setAncestorClass(__CLASS__) - ->execute(); - } - - public function isEnabled() { - return $this->getProviderConfig()->getIsEnabled(); - } - - abstract public function isAcceptingLivePayments(); - abstract public function getPaymentMethodDescription(); - abstract public function getPaymentMethodIcon(); - abstract public function getPaymentMethodProviderDescription(); - - final public function applyCharge( - PhortunePaymentMethod $payment_method, - PhortuneCharge $charge) { - $this->executeCharge($payment_method, $charge); - } - - final public function refundCharge( - PhortuneCharge $charge, - PhortuneCharge $refund) { - $this->executeRefund($charge, $refund); - } - - abstract protected function executeCharge( - PhortunePaymentMethod $payment_method, - PhortuneCharge $charge); - - abstract protected function executeRefund( - PhortuneCharge $charge, - PhortuneCharge $refund); - - abstract public function updateCharge(PhortuneCharge $charge); - - -/* -( Adding Payment Methods )--------------------------------------------- */ - - - /** - * @task addmethod - */ - public function canCreatePaymentMethods() { - return false; - } - - - /** - * @task addmethod - */ - public function translateCreatePaymentMethodErrorCode($error_code) { - throw new PhutilMethodNotImplementedException(); - } - - - /** - * @task addmethod - */ - public function getCreatePaymentMethodErrorMessage($error_code) { - throw new PhutilMethodNotImplementedException(); - } - - - /** - * @task addmethod - */ - public function validateCreatePaymentMethodToken(array $token) { - throw new PhutilMethodNotImplementedException(); - } - - - /** - * @task addmethod - */ - public function createPaymentMethodFromRequest( - AphrontRequest $request, - PhortunePaymentMethod $method, - array $token) { - throw new PhutilMethodNotImplementedException(); - } - - - /** - * @task addmethod - */ - public function renderCreatePaymentMethodForm( - AphrontRequest $request, - array $errors) { - throw new PhutilMethodNotImplementedException(); - } - - public function getDefaultPaymentMethodDisplayName( - PhortunePaymentMethod $method) { - throw new PhutilMethodNotImplementedException(); - } - - -/* -( One-Time Payments )-------------------------------------------------- */ - - - public function canProcessOneTimePayments() { - return false; - } - - public function renderOneTimePaymentButton( - PhortuneAccount $account, - PhortuneCart $cart, - PhabricatorUser $user) { - - require_celerity_resource('phortune-css'); - - $description = $this->getPaymentMethodProviderDescription(); - $details = $this->getPaymentMethodDescription(); - - $icon = id(new PHUIIconView()) - ->setSpriteSheet(PHUIIconView::SPRITE_LOGIN) - ->setSpriteIcon($this->getPaymentMethodIcon()); - - $button = id(new PHUIButtonView()) - ->setSize(PHUIButtonView::BIG) - ->setColor(PHUIButtonView::GREY) - ->setIcon($icon) - ->setText($description) - ->setSubtext($details); - - // NOTE: We generate a local URI to make sure the form picks up CSRF tokens. - $uri = $this->getControllerURI( - 'checkout', - array( - 'cartID' => $cart->getID(), - ), - $local = true); - - return phabricator_form( - $user, - array( - 'action' => $uri, - 'method' => 'POST', - ), - $button); - } - - -/* -( Controllers )-------------------------------------------------------- */ - - - final public function getControllerURI( - $action, - array $params = array(), - $local = false) { - - $id = $this->getProviderConfig()->getID(); - $app = PhabricatorApplication::getByClass('PhabricatorPhortuneApplication'); - $path = $app->getBaseURI().'provider/'.$id.'/'.$action.'/'; - - $uri = new PhutilURI($path, $params); - - if ($local) { - return $uri; - } else { - return PhabricatorEnv::getURI((string)$uri); - } - } - - public function canRespondToControllerAction($action) { - return false; - } - - public function processControllerRequest( - PhortuneProviderActionController $controller, - AphrontRequest $request) { - throw new PhutilMethodNotImplementedException(); - } - -} diff --git a/src/applications/phortune/provider/PhortuneStripePaymentProvider.php b/src/applications/phortune/provider/PhortuneStripePaymentProvider.php deleted file mode 100644 --- a/src/applications/phortune/provider/PhortuneStripePaymentProvider.php +++ /dev/null @@ -1,470 +0,0 @@ -getPublishableKey()); - } - - public function getName() { - return pht('Stripe'); - } - - public function getConfigureName() { - return pht('Add Stripe Payments Account'); - } - - public function getConfigureDescription() { - return pht( - 'Allows you to accept credit or debit card payments with a '. - 'stripe.com account.'); - } - - public function getConfigureProvidesDescription() { - return pht('This merchant accepts credit and debit cards via Stripe.'); - } - - public function getPaymentMethodDescription() { - return pht('Add Credit or Debit Card (US and Canada)'); - } - - public function getPaymentMethodIcon() { - return 'Stripe'; - } - - public function getPaymentMethodProviderDescription() { - return pht('Processed by Stripe'); - } - - public function getDefaultPaymentMethodDisplayName( - PhortunePaymentMethod $method) { - return pht('Credit/Debit Card'); - } - - public function getAllConfigurableProperties() { - return array( - self::STRIPE_PUBLISHABLE_KEY, - self::STRIPE_SECRET_KEY, - ); - } - - public function getAllConfigurableSecretProperties() { - return array( - self::STRIPE_SECRET_KEY, - ); - } - - public function processEditForm( - AphrontRequest $request, - array $values) { - - $errors = array(); - $issues = array(); - - if (!strlen($values[self::STRIPE_SECRET_KEY])) { - $errors[] = pht('Stripe Secret Key is required.'); - $issues[self::STRIPE_SECRET_KEY] = pht('Required'); - } - - if (!strlen($values[self::STRIPE_PUBLISHABLE_KEY])) { - $errors[] = pht('Stripe Publishable Key is required.'); - $issues[self::STRIPE_PUBLISHABLE_KEY] = pht('Required'); - } - - return array($errors, $issues, $values); - } - - public function extendEditForm( - AphrontRequest $request, - AphrontFormView $form, - array $values, - array $issues) { - - $form - ->appendChild( - id(new AphrontFormTextControl()) - ->setName(self::STRIPE_SECRET_KEY) - ->setValue($values[self::STRIPE_SECRET_KEY]) - ->setError(idx($issues, self::STRIPE_SECRET_KEY, true)) - ->setLabel(pht('Stripe Secret Key'))) - ->appendChild( - id(new AphrontFormTextControl()) - ->setName(self::STRIPE_PUBLISHABLE_KEY) - ->setValue($values[self::STRIPE_PUBLISHABLE_KEY]) - ->setError(idx($issues, self::STRIPE_PUBLISHABLE_KEY, true)) - ->setLabel(pht('Stripe Publishable Key'))); - } - - public function getConfigureInstructions() { - return pht( - "To configure Stripe, register or log in to an existing account on ". - "[[https://stripe.com | stripe.com]]. Once logged in:\n\n". - " - Go to {nav icon=user, name=Your Account > Account Settings ". - "> API Keys}\n". - " - Copy the **Secret Key** and **Publishable Key** into the fields ". - "above.\n\n". - "You can either use the test keys to add this provider in test mode, ". - "or the live keys to accept live payments."); - } - - public function canRunConfigurationTest() { - return true; - } - - public function runConfigurationTest() { - $this->loadStripeAPILibraries(); - - $secret_key = $this->getSecretKey(); - $account = Stripe_Account::retrieve($secret_key); - } - - /** - * @phutil-external-symbol class Stripe_Charge - * @phutil-external-symbol class Stripe_CardError - * @phutil-external-symbol class Stripe_Account - */ - protected function executeCharge( - PhortunePaymentMethod $method, - PhortuneCharge $charge) { - $this->loadStripeAPILibraries(); - - $price = $charge->getAmountAsCurrency(); - - $secret_key = $this->getSecretKey(); - $params = array( - 'amount' => $price->getValueInUSDCents(), - 'currency' => $price->getCurrency(), - 'customer' => $method->getMetadataValue('stripe.customerID'), - 'description' => $charge->getPHID(), - 'capture' => true, - ); - - $stripe_charge = Stripe_Charge::create($params, $secret_key); - - $id = $stripe_charge->id; - if (!$id) { - throw new Exception(pht('Stripe charge call did not return an ID!')); - } - - $charge->setMetadataValue('stripe.chargeID', $id); - $charge->save(); - } - - protected function executeRefund( - PhortuneCharge $charge, - PhortuneCharge $refund) { - $this->loadStripeAPILibraries(); - - $charge_id = $charge->getMetadataValue('stripe.chargeID'); - if (!$charge_id) { - throw new Exception( - pht('Unable to refund charge; no Stripe chargeID!')); - } - - $refund_cents = $refund - ->getAmountAsCurrency() - ->negate() - ->getValueInUSDCents(); - - $secret_key = $this->getSecretKey(); - $params = array( - 'amount' => $refund_cents, - ); - - $stripe_charge = Stripe_Charge::retrieve($charge_id, $secret_key); - $stripe_refund = $stripe_charge->refunds->create($params); - - $id = $stripe_refund->id; - if (!$id) { - throw new Exception(pht('Stripe refund call did not return an ID!')); - } - - $charge->setMetadataValue('stripe.refundID', $id); - $charge->save(); - } - - public function updateCharge(PhortuneCharge $charge) { - $this->loadStripeAPILibraries(); - - $charge_id = $charge->getMetadataValue('stripe.chargeID'); - if (!$charge_id) { - throw new Exception( - pht('Unable to update charge; no Stripe chargeID!')); - } - - $secret_key = $this->getSecretKey(); - $stripe_charge = Stripe_Charge::retrieve($charge_id, $secret_key); - - // TODO: Deal with disputes / chargebacks / surprising refunds. - - } - - private function getPublishableKey() { - return $this - ->getProviderConfig() - ->getMetadataValue(self::STRIPE_PUBLISHABLE_KEY); - } - - private function getSecretKey() { - return $this - ->getProviderConfig() - ->getMetadataValue(self::STRIPE_SECRET_KEY); - } - - -/* -( Adding Payment Methods )--------------------------------------------- */ - - - public function canCreatePaymentMethods() { - return true; - } - - - /** - * @phutil-external-symbol class Stripe_Token - * @phutil-external-symbol class Stripe_Customer - */ - public function createPaymentMethodFromRequest( - AphrontRequest $request, - PhortunePaymentMethod $method, - array $token) { - $this->loadStripeAPILibraries(); - - $secret_key = $this->getSecretKey(); - $stripe_token = $token['stripeCardToken']; - - // First, make sure the token is valid. - $info = id(new Stripe_Token())->retrieve($stripe_token, $secret_key); - - $account_phid = $method->getAccountPHID(); - $author_phid = $method->getAuthorPHID(); - - $params = array( - 'card' => $stripe_token, - 'description' => $account_phid.':'.$author_phid, - ); - - // Then, we need to create a Customer in order to be able to charge - // the card more than once. We create one Customer for each card; - // they do not map to PhortuneAccounts because we allow an account to - // have more than one active card. - try { - $customer = Stripe_Customer::create($params, $secret_key); - } catch (Stripe_CardError $ex) { - $display_exception = $this->newDisplayExceptionFromCardError($ex); - if ($display_exception) { - throw $display_exception; - } - throw $ex; - } - - $card = $info->card; - - $method - ->setBrand($card->brand) - ->setLastFourDigits($card->last4) - ->setExpires($card->exp_year, $card->exp_month) - ->setMetadata( - array( - 'type' => 'stripe.customer', - 'stripe.customerID' => $customer->id, - 'stripe.cardToken' => $stripe_token, - )); - } - - public function renderCreatePaymentMethodForm( - AphrontRequest $request, - array $errors) { - - $src = 'https://js.stripe.com/v2/'; - - $ccform = id(new PhortuneCreditCardForm()) - ->setSecurityAssurance( - pht('Payments are processed securely by Stripe.')) - ->setUser($request->getUser()) - ->setErrors($errors) - ->addScript($src); - - CelerityAPI::getStaticResourceResponse() - ->addContentSecurityPolicyURI('script-src', $src) - ->addContentSecurityPolicyURI('frame-src', $src); - - Javelin::initBehavior( - 'stripe-payment-form', - array( - 'stripePublishableKey' => $this->getPublishableKey(), - 'formID' => $ccform->getFormID(), - )); - - return $ccform->buildForm(); - } - - private function getStripeShortErrorCode($error_code) { - $prefix = 'cc:stripe:'; - if (strncmp($error_code, $prefix, strlen($prefix))) { - return null; - } - return substr($error_code, strlen($prefix)); - } - - public function validateCreatePaymentMethodToken(array $token) { - return isset($token['stripeCardToken']); - } - - public function translateCreatePaymentMethodErrorCode($error_code) { - $short_code = $this->getStripeShortErrorCode($error_code); - - if ($short_code) { - static $map = array( - 'error:invalid_number' => PhortuneErrCode::ERR_CC_INVALID_NUMBER, - 'error:invalid_cvc' => PhortuneErrCode::ERR_CC_INVALID_CVC, - 'error:invalid_expiry_month' => PhortuneErrCode::ERR_CC_INVALID_EXPIRY, - 'error:invalid_expiry_year' => PhortuneErrCode::ERR_CC_INVALID_EXPIRY, - ); - - if (isset($map[$short_code])) { - return $map[$short_code]; - } - } - - return $error_code; - } - - /** - * See https://stripe.com/docs/api#errors for more information on possible - * errors. - */ - public function getCreatePaymentMethodErrorMessage($error_code) { - $short_code = $this->getStripeShortErrorCode($error_code); - if (!$short_code) { - return null; - } - - switch ($short_code) { - case 'error:incorrect_number': - $error_key = 'number'; - $message = pht('Invalid or incorrect credit card number.'); - break; - case 'error:incorrect_cvc': - $error_key = 'cvc'; - $message = pht('Card CVC is invalid or incorrect.'); - break; - $error_key = 'exp'; - $message = pht('Card expiration date is invalid or incorrect.'); - break; - case 'error:invalid_expiry_month': - case 'error:invalid_expiry_year': - case 'error:invalid_cvc': - case 'error:invalid_number': - // NOTE: These should be translated into Phortune error codes earlier, - // so we don't expect to receive them here. They are listed for clarity - // and completeness. If we encounter one, we treat it as an unknown - // error. - break; - case 'error:invalid_amount': - case 'error:missing': - case 'error:card_declined': - case 'error:expired_card': - case 'error:duplicate_transaction': - case 'error:processing_error': - default: - // NOTE: These errors currently don't receive a detailed message. - // NOTE: We can also end up here with "http:nnn" messages. - - // TODO: At least some of these should have a better message, or be - // translated into common errors above. - break; - } - - return null; - } - - private function loadStripeAPILibraries() { - $root = dirname(phutil_get_library_root('phabricator')); - require_once $root.'/externals/stripe-php/lib/Stripe.php'; - } - - - private function newDisplayExceptionFromCardError(Stripe_CardError $ex) { - $body = $ex->getJSONBody(); - if (!$body) { - return null; - } - - $map = idx($body, 'error'); - if (!$map) { - return null; - } - - $view = array(); - - $message = idx($map, 'message'); - - $view[] = id(new PHUIInfoView()) - ->setErrors(array($message)); - - $view[] = phutil_tag( - 'div', - array( - 'class' => 'mlt mlb', - ), - pht('Additional details about this error:')); - - $rows = array(); - - $rows[] = array( - pht('Error Code'), - idx($map, 'code'), - ); - - $rows[] = array( - pht('Error Type'), - idx($map, 'type'), - ); - - $param = idx($map, 'param'); - if (strlen($param)) { - $rows[] = array( - pht('Error Param'), - $param, - ); - } - - $decline_code = idx($map, 'decline_code'); - if (strlen($decline_code)) { - $rows[] = array( - pht('Decline Code'), - $decline_code, - ); - } - - $doc_url = idx($map, 'doc_url'); - if ($doc_url) { - $rows[] = array( - pht('Learn More'), - phutil_tag( - 'a', - array( - 'href' => $doc_url, - 'target' => '_blank', - ), - $doc_url), - ); - } - - $view[] = id(new AphrontTableView($rows)) - ->setColumnClasses( - array( - 'header', - 'wide', - )); - - return id(new PhortuneDisplayException(get_class($ex))) - ->setView($view); - } - - -} diff --git a/src/applications/phortune/provider/PhortuneTestPaymentProvider.php b/src/applications/phortune/provider/PhortuneTestPaymentProvider.php deleted file mode 100644 --- a/src/applications/phortune/provider/PhortuneTestPaymentProvider.php +++ /dev/null @@ -1,160 +0,0 @@ -setExpires('2050', '01') - ->setBrand('FreeMoney') - ->setLastFourDigits('9999') - ->setMetadata( - array( - 'type' => 'test.wealth', - )); - - return array(); - } - - - /** - * @task addmethod - */ - public function renderCreatePaymentMethodForm( - AphrontRequest $request, - array $errors) { - - $ccform = id(new PhortuneCreditCardForm()) - ->setSecurityAssurance( - pht('This is a test payment provider.')) - ->setUser($request->getUser()) - ->setErrors($errors); - - Javelin::initBehavior( - 'test-payment-form', - array( - 'formID' => $ccform->getFormID(), - )); - - return $ccform->buildForm(); - } -} diff --git a/src/applications/phortune/provider/__tests__/PhortunePaymentProviderTestCase.php b/src/applications/phortune/provider/__tests__/PhortunePaymentProviderTestCase.php deleted file mode 100644 --- a/src/applications/phortune/provider/__tests__/PhortunePaymentProviderTestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } - -} diff --git a/src/applications/phortune/query/PhortuneAccountEmailQuery.php b/src/applications/phortune/query/PhortuneAccountEmailQuery.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneAccountEmailQuery.php +++ /dev/null @@ -1,113 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withAccountPHIDs(array $phids) { - $this->accountPHIDs = $phids; - return $this; - } - - public function withAddressKeys(array $keys) { - $this->addressKeys = $keys; - return $this; - } - - public function withStatuses(array $statuses) { - $this->statuses = $statuses; - return $this; - } - - public function newResultObject() { - return new PhortuneAccountEmail(); - } - - protected function willFilterPage(array $addresses) { - $accounts = id(new PhortuneAccountQuery()) - ->setViewer($this->getViewer()) - ->setParentQuery($this) - ->withPHIDs(mpull($addresses, 'getAccountPHID')) - ->execute(); - $accounts = mpull($accounts, null, 'getPHID'); - - foreach ($addresses as $key => $address) { - $account = idx($accounts, $address->getAccountPHID()); - - if (!$account) { - $this->didRejectResult($addresses[$key]); - unset($addresses[$key]); - continue; - } - - $address->attachAccount($account); - } - - return $addresses; - } - - protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) { - $where = parent::buildWhereClauseParts($conn); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'address.id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'address.phid IN (%Ls)', - $this->phids); - } - - if ($this->accountPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'address.accountPHID IN (%Ls)', - $this->accountPHIDs); - } - - if ($this->addressKeys !== null) { - $where[] = qsprintf( - $conn, - 'address.addressKey IN (%Ls)', - $this->addressKeys); - } - - if ($this->statuses !== null) { - $where[] = qsprintf( - $conn, - 'address.status IN (%Ls)', - $this->statuses); - } - - return $where; - } - - public function getQueryApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - - protected function getPrimaryTableAlias() { - return 'address'; - } - -} diff --git a/src/applications/phortune/query/PhortuneAccountEmailTransactionQuery.php b/src/applications/phortune/query/PhortuneAccountEmailTransactionQuery.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneAccountEmailTransactionQuery.php +++ /dev/null @@ -1,10 +0,0 @@ -setViewer($user) - ->withMemberPHIDs(array($user->getPHID())) - ->execute(); - - if (!$accounts) { - $accounts = array( - PhortuneAccount::createNewAccount($user, $content_source), - ); - } - - $accounts = mpull($accounts, null, 'getPHID'); - - return $accounts; - } - - public function withIDs(array $ids) { - $this->ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withMemberPHIDs(array $phids) { - $this->memberPHIDs = $phids; - return $this; - } - - public function newResultObject() { - return new PhortuneAccount(); - } - - protected function willFilterPage(array $accounts) { - $query = id(new PhabricatorEdgeQuery()) - ->withSourcePHIDs(mpull($accounts, 'getPHID')) - ->withEdgeTypes( - array( - PhortuneAccountHasMemberEdgeType::EDGECONST, - PhortuneAccountHasMerchantEdgeType::EDGECONST, - )); - - $query->execute(); - - foreach ($accounts as $account) { - $member_phids = $query->getDestinationPHIDs( - array( - $account->getPHID(), - ), - array( - PhortuneAccountHasMemberEdgeType::EDGECONST, - )); - $member_phids = array_reverse($member_phids); - $account->attachMemberPHIDs($member_phids); - - $merchant_phids = $query->getDestinationPHIDs( - array( - $account->getPHID(), - ), - array( - PhortuneAccountHasMerchantEdgeType::EDGECONST, - )); - $merchant_phids = array_reverse($merchant_phids); - $account->attachMerchantPHIDs($merchant_phids); - } - - return $accounts; - } - - protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) { - $where = parent::buildWhereClauseParts($conn); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'a.id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'a.phid IN (%Ls)', - $this->phids); - } - - if ($this->memberPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'm.dst IN (%Ls)', - $this->memberPHIDs); - } - - return $where; - } - - protected function buildJoinClauseParts(AphrontDatabaseConnection $conn) { - $joins = parent::buildJoinClauseParts($conn); - - if ($this->memberPHIDs !== null) { - $joins[] = qsprintf( - $conn, - 'LEFT JOIN %T m ON a.phid = m.src AND m.type = %d', - PhabricatorEdgeConfig::TABLE_NAME_EDGE, - PhortuneAccountHasMemberEdgeType::EDGECONST); - } - - return $joins; - } - - public function getQueryApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - - protected function getPrimaryTableAlias() { - return 'a'; - } - -} diff --git a/src/applications/phortune/query/PhortuneAccountTransactionQuery.php b/src/applications/phortune/query/PhortuneAccountTransactionQuery.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneAccountTransactionQuery.php +++ /dev/null @@ -1,10 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withAccountPHIDs(array $account_phids) { - $this->accountPHIDs = $account_phids; - return $this; - } - - public function withMerchantPHIDs(array $merchant_phids) { - $this->merchantPHIDs = $merchant_phids; - return $this; - } - - public function withSubscriptionPHIDs(array $subscription_phids) { - $this->subscriptionPHIDs = $subscription_phids; - return $this; - } - - public function withStatuses(array $statuses) { - $this->statuses = $statuses; - return $this; - } - - - /** - * Include or exclude carts which represent invoices with payments due. - * - * @param bool `true` to select invoices; `false` to exclude invoices. - * @return this - */ - public function withInvoices($invoices) { - $this->invoices = $invoices; - return $this; - } - - public function needPurchases($need_purchases) { - $this->needPurchases = $need_purchases; - return $this; - } - - protected function loadPage() { - $table = new PhortuneCart(); - $conn = $table->establishConnection('r'); - - $rows = queryfx_all( - $conn, - 'SELECT cart.* FROM %T cart %Q %Q %Q', - $table->getTableName(), - $this->buildWhereClause($conn), - $this->buildOrderClause($conn), - $this->buildLimitClause($conn)); - - return $table->loadAllFromArray($rows); - } - - protected function willFilterPage(array $carts) { - $accounts = id(new PhortuneAccountQuery()) - ->setViewer($this->getViewer()) - ->withPHIDs(mpull($carts, 'getAccountPHID')) - ->execute(); - $accounts = mpull($accounts, null, 'getPHID'); - - foreach ($carts as $key => $cart) { - $account = idx($accounts, $cart->getAccountPHID()); - if (!$account) { - unset($carts[$key]); - continue; - } - $cart->attachAccount($account); - } - - if (!$carts) { - return array(); - } - - $merchants = id(new PhortuneMerchantQuery()) - ->setViewer($this->getViewer()) - ->withPHIDs(mpull($carts, 'getMerchantPHID')) - ->execute(); - $merchants = mpull($merchants, null, 'getPHID'); - - foreach ($carts as $key => $cart) { - $merchant = idx($merchants, $cart->getMerchantPHID()); - if (!$merchant) { - unset($carts[$key]); - continue; - } - $cart->attachMerchant($merchant); - } - - if (!$carts) { - return array(); - } - - $implementations = array(); - - $cart_map = mgroup($carts, 'getCartClass'); - foreach ($cart_map as $class => $class_carts) { - $implementations += newv($class, array())->loadImplementationsForCarts( - $this->getViewer(), - $class_carts); - } - - foreach ($carts as $key => $cart) { - $implementation = idx($implementations, $key); - if (!$implementation) { - unset($carts[$key]); - continue; - } - $cart->attachImplementation($implementation); - } - - return $carts; - } - - protected function didFilterPage(array $carts) { - if ($this->needPurchases) { - $purchases = id(new PhortunePurchaseQuery()) - ->setViewer($this->getViewer()) - ->setParentQuery($this) - ->withCartPHIDs(mpull($carts, 'getPHID')) - ->execute(); - - $purchases = mgroup($purchases, 'getCartPHID'); - foreach ($carts as $cart) { - $cart->attachPurchases(idx($purchases, $cart->getPHID(), array())); - } - } - - return $carts; - } - - protected function buildWhereClause(AphrontDatabaseConnection $conn) { - $where = array(); - - $where[] = $this->buildPagingClause($conn); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'cart.id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'cart.phid IN (%Ls)', - $this->phids); - } - - if ($this->accountPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'cart.accountPHID IN (%Ls)', - $this->accountPHIDs); - } - - if ($this->merchantPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'cart.merchantPHID IN (%Ls)', - $this->merchantPHIDs); - } - - if ($this->subscriptionPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'cart.subscriptionPHID IN (%Ls)', - $this->subscriptionPHIDs); - } - - if ($this->statuses !== null) { - $where[] = qsprintf( - $conn, - 'cart.status IN (%Ls)', - $this->statuses); - } - - if ($this->invoices !== null) { - if ($this->invoices) { - $where[] = qsprintf( - $conn, - 'cart.status = %s AND cart.isInvoice = 1', - PhortuneCart::STATUS_READY); - } else { - $where[] = qsprintf( - $conn, - 'cart.status != %s OR cart.isInvoice = 0', - PhortuneCart::STATUS_READY); - } - } - - return $this->formatWhereClause($conn, $where); - } - - public function getQueryApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - -} diff --git a/src/applications/phortune/query/PhortuneCartSearchEngine.php b/src/applications/phortune/query/PhortuneCartSearchEngine.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneCartSearchEngine.php +++ /dev/null @@ -1,218 +0,0 @@ -account = $account; - return $this; - } - - public function getAccount() { - return $this->account; - } - - public function setMerchant(PhortuneMerchant $merchant) { - $this->merchant = $merchant; - return $this; - } - - public function getMerchant() { - return $this->merchant; - } - - public function setSubscription(PhortuneSubscription $subscription) { - $this->subscription = $subscription; - return $this; - } - - public function getSubscription() { - return $this->subscription; - } - - public function getResultTypeDescription() { - return pht('Phortune Orders'); - } - - public function getApplicationClassName() { - return 'PhabricatorPhortuneApplication'; - } - - public function buildSavedQueryFromRequest(AphrontRequest $request) { - $saved = new PhabricatorSavedQuery(); - - return $saved; - } - - public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { - $query = id(new PhortuneCartQuery()) - ->needPurchases(true); - - $viewer = $this->requireViewer(); - - $merchant = $this->getMerchant(); - $account = $this->getAccount(); - if ($merchant) { - $query->withMerchantPHIDs(array($merchant->getPHID())); - } else if ($account) { - $query->withAccountPHIDs(array($account->getPHID())); - } else { - $accounts = id(new PhortuneAccountQuery()) - ->withMemberPHIDs(array($viewer->getPHID())) - ->execute(); - if ($accounts) { - $query->withAccountPHIDs(mpull($accounts, 'getPHID')); - } else { - throw new Exception(pht('You have no accounts!')); - } - } - - $subscription = $this->getSubscription(); - if ($subscription) { - $query->withSubscriptionPHIDs(array($subscription->getPHID())); - } - - if ($saved->getParameter('invoices')) { - $query->withInvoices(true); - } else { - $query->withStatuses( - array( - PhortuneCart::STATUS_PURCHASING, - PhortuneCart::STATUS_CHARGED, - PhortuneCart::STATUS_HOLD, - PhortuneCart::STATUS_REVIEW, - PhortuneCart::STATUS_PURCHASED, - )); - } - - return $query; - } - - public function buildSearchForm( - AphrontFormView $form, - PhabricatorSavedQuery $saved_query) {} - - protected function getURI($path) { - $merchant = $this->getMerchant(); - $account = $this->getAccount(); - if ($merchant) { - return $merchant->getOrderListURI($path); - } else if ($account) { - return $account->getOrderListURI($path); - } else { - return '/phortune/order/'.$path; - } - } - - protected function getBuiltinQueryNames() { - $names = array( - 'all' => pht('Order History'), - 'invoices' => pht('Unpaid Invoices'), - ); - - return $names; - } - - public function buildSavedQueryFromBuiltin($query_key) { - - $query = $this->newSavedQuery(); - $query->setQueryKey($query_key); - - switch ($query_key) { - case 'all': - return $query; - case 'invoices': - return $query->setParameter('invoices', true); - } - - return parent::buildSavedQueryFromBuiltin($query_key); - } - - protected function getRequiredHandlePHIDsForResultList( - array $carts, - PhabricatorSavedQuery $query) { - $phids = array(); - foreach ($carts as $cart) { - $phids[] = $cart->getPHID(); - $phids[] = $cart->getMerchantPHID(); - $phids[] = $cart->getAuthorPHID(); - } - return $phids; - } - - protected function renderResultList( - array $carts, - PhabricatorSavedQuery $query, - array $handles) { - assert_instances_of($carts, 'PhortuneCart'); - - $viewer = $this->requireViewer(); - - $rows = array(); - foreach ($carts as $cart) { - $merchant = $cart->getMerchant(); - - if ($this->getMerchant()) { - $href = $this->getApplicationURI( - 'merchant/'.$merchant->getID().'/cart/'.$cart->getID().'/'); - } else { - $href = $cart->getDetailURI(); - } - - $rows[] = array( - $cart->getID(), - $handles[$cart->getPHID()]->renderLink(), - $handles[$merchant->getPHID()]->renderLink(), - $handles[$cart->getAuthorPHID()]->renderLink(), - $cart->getTotalPriceAsCurrency()->formatForDisplay(), - PhortuneCart::getNameForStatus($cart->getStatus()), - phabricator_datetime($cart->getDateModified(), $viewer), - ); - } - - $table = id(new AphrontTableView($rows)) - ->setNoDataString(pht('No orders match the query.')) - ->setHeaders( - array( - pht('ID'), - pht('Order'), - pht('Merchant'), - pht('Authorized By'), - pht('Amount'), - pht('Status'), - pht('Updated'), - )) - ->setColumnClasses( - array( - '', - 'pri', - '', - '', - 'wide right', - '', - 'right', - )); - - $merchant = $this->getMerchant(); - if ($merchant) { - $notice = pht('Orders for %s', $merchant->getName()); - } else { - $notice = pht('Your Orders'); - } - $table->setNotice($notice); - - $result = new PhabricatorApplicationSearchResultView(); - $result->setTable($table); - - return $result; - } -} diff --git a/src/applications/phortune/query/PhortuneCartTransactionQuery.php b/src/applications/phortune/query/PhortuneCartTransactionQuery.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneCartTransactionQuery.php +++ /dev/null @@ -1,10 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withAccountPHIDs(array $account_phids) { - $this->accountPHIDs = $account_phids; - return $this; - } - - public function withCartPHIDs(array $cart_phids) { - $this->cartPHIDs = $cart_phids; - return $this; - } - - public function withStatuses(array $statuses) { - $this->statuses = $statuses; - return $this; - } - - public function needCarts($need_carts) { - $this->needCarts = $need_carts; - return $this; - } - - protected function loadPage() { - $table = new PhortuneCharge(); - $conn = $table->establishConnection('r'); - - $rows = queryfx_all( - $conn, - 'SELECT charge.* FROM %T charge %Q %Q %Q', - $table->getTableName(), - $this->buildWhereClause($conn), - $this->buildOrderClause($conn), - $this->buildLimitClause($conn)); - - return $table->loadAllFromArray($rows); - } - - protected function willFilterPage(array $charges) { - $accounts = id(new PhortuneAccountQuery()) - ->setViewer($this->getViewer()) - ->setParentQuery($this) - ->withPHIDs(mpull($charges, 'getAccountPHID')) - ->execute(); - $accounts = mpull($accounts, null, 'getPHID'); - - foreach ($charges as $key => $charge) { - $account = idx($accounts, $charge->getAccountPHID()); - if (!$account) { - unset($charges[$key]); - continue; - } - $charge->attachAccount($account); - } - - return $charges; - } - - protected function didFilterPage(array $charges) { - if ($this->needCarts) { - $carts = id(new PhortuneCartQuery()) - ->setViewer($this->getViewer()) - ->setParentQuery($this) - ->withPHIDs(mpull($charges, 'getCartPHID')) - ->execute(); - $carts = mpull($carts, null, 'getPHID'); - - foreach ($charges as $charge) { - $cart = idx($carts, $charge->getCartPHID()); - $charge->attachCart($cart); - } - } - - return $charges; - } - - protected function buildWhereClause(AphrontDatabaseConnection $conn) { - $where = array(); - - $where[] = $this->buildPagingClause($conn); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'charge.id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'charge.phid IN (%Ls)', - $this->phids); - } - - if ($this->accountPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'charge.accountPHID IN (%Ls)', - $this->accountPHIDs); - } - - if ($this->cartPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'charge.cartPHID IN (%Ls)', - $this->cartPHIDs); - } - - if ($this->statuses !== null) { - $where[] = qsprintf( - $conn, - 'charge.status IN (%Ls)', - $this->statuses); - } - - return $this->formatWhereClause($conn, $where); - } - - public function getQueryApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - -} diff --git a/src/applications/phortune/query/PhortuneChargeSearchEngine.php b/src/applications/phortune/query/PhortuneChargeSearchEngine.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneChargeSearchEngine.php +++ /dev/null @@ -1,110 +0,0 @@ -account = $account; - return $this; - } - - public function getAccount() { - return $this->account; - } - - public function getResultTypeDescription() { - return pht('Phortune Charges'); - } - - public function getApplicationClassName() { - return 'PhabricatorPhortuneApplication'; - } - - public function buildSavedQueryFromRequest(AphrontRequest $request) { - $saved = new PhabricatorSavedQuery(); - - return $saved; - } - - public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { - $query = id(new PhortuneChargeQuery()); - - $viewer = $this->requireViewer(); - - $account = $this->getAccount(); - if ($account) { - $query->withAccountPHIDs(array($account->getPHID())); - } else { - $accounts = id(new PhortuneAccountQuery()) - ->withMemberPHIDs(array($viewer->getPHID())) - ->execute(); - if ($accounts) { - $query->withAccountPHIDs(mpull($accounts, 'getPHID')); - } else { - throw new Exception(pht('You have no accounts!')); - } - } - - return $query; - } - - public function buildSearchForm( - AphrontFormView $form, - PhabricatorSavedQuery $saved_query) {} - - protected function getURI($path) { - $account = $this->getAccount(); - if ($account) { - return $account->getChargeListURI($path); - } else { - return '/phortune/charge/'.$path; - } - } - - protected function getBuiltinQueryNames() { - $names = array( - 'all' => pht('All Charges'), - ); - - return $names; - } - - public function buildSavedQueryFromBuiltin($query_key) { - - $query = $this->newSavedQuery(); - $query->setQueryKey($query_key); - - switch ($query_key) { - case 'all': - return $query; - } - - return parent::buildSavedQueryFromBuiltin($query_key); - } - - - protected function renderResultList( - array $charges, - PhabricatorSavedQuery $query, - array $handles) { - assert_instances_of($charges, 'PhortuneCharge'); - - $viewer = $this->requireViewer(); - - $table = id(new PhortuneChargeTableView()) - ->setUser($viewer) - ->setCharges($charges); - - $result = new PhabricatorApplicationSearchResultView(); - $result->setTable($table); - - return $result; - } -} diff --git a/src/applications/phortune/query/PhortuneMerchantQuery.php b/src/applications/phortune/query/PhortuneMerchantQuery.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneMerchantQuery.php +++ /dev/null @@ -1,189 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withMemberPHIDs(array $member_phids) { - $this->memberPHIDs = $member_phids; - return $this; - } - - public function needProfileImage($need) { - $this->needProfileImage = $need; - return $this; - } - - public function newResultObject() { - return new PhortuneMerchant(); - } - - protected function willFilterPage(array $merchants) { - $query = id(new PhabricatorEdgeQuery()) - ->withSourcePHIDs(mpull($merchants, 'getPHID')) - ->withEdgeTypes(array(PhortuneMerchantHasMemberEdgeType::EDGECONST)); - $query->execute(); - - foreach ($merchants as $merchant) { - $member_phids = $query->getDestinationPHIDs(array($merchant->getPHID())); - $member_phids = array_reverse($member_phids); - $merchant->attachMemberPHIDs($member_phids); - } - - if ($this->needProfileImage) { - $default = null; - $file_phids = mpull($merchants, 'getProfileImagePHID'); - $file_phids = array_filter($file_phids); - if ($file_phids) { - $files = id(new PhabricatorFileQuery()) - ->setParentQuery($this) - ->setViewer($this->getViewer()) - ->withPHIDs($file_phids) - ->execute(); - $files = mpull($files, null, 'getPHID'); - } else { - $files = array(); - } - - foreach ($merchants as $merchant) { - $file = idx($files, $merchant->getProfileImagePHID()); - if (!$file) { - if (!$default) { - $default = PhabricatorFile::loadBuiltin( - $this->getViewer(), - 'merchant.png'); - } - $file = $default; - } - $merchant->attachProfileImageFile($file); - } - } - - return $merchants; - } - - protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) { - $where = parent::buildWhereClauseParts($conn); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'merchant.id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'merchant.phid IN (%Ls)', - $this->phids); - } - - if ($this->memberPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'e.dst IN (%Ls)', - $this->memberPHIDs); - } - - return $where; - } - - protected function buildJoinClauseParts(AphrontDatabaseConnection $conn) { - $joins = parent::buildJoinClauseParts($conn); - - if ($this->memberPHIDs !== null) { - $joins[] = qsprintf( - $conn, - 'LEFT JOIN %T e ON merchant.phid = e.src AND e.type = %d', - PhabricatorEdgeConfig::TABLE_NAME_EDGE, - PhortuneMerchantHasMemberEdgeType::EDGECONST); - } - - return $joins; - } - - public function getQueryApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - - protected function getPrimaryTableAlias() { - return 'merchant'; - } - - public static function canViewersEditMerchants( - array $viewer_phids, - array $merchant_phids) { - - // See T13366 for some discussion. This is an unusual caching construct to - // make policy filtering of Accounts easier. - - foreach ($viewer_phids as $key => $viewer_phid) { - if (!$viewer_phid) { - unset($viewer_phids[$key]); - } - } - - if (!$viewer_phids) { - return array(); - } - - $cache_key = 'phortune.merchant.can-edit'; - $cache = PhabricatorCaches::getRequestCache(); - - $cache_data = $cache->getKey($cache_key); - if (!$cache_data) { - $cache_data = array(); - } - - $load_phids = array(); - foreach ($viewer_phids as $viewer_phid) { - if (!isset($cache_data[$viewer_phid])) { - $load_phids[] = $viewer_phid; - } - } - - $did_write = false; - foreach ($load_phids as $load_phid) { - $merchants = id(new self()) - ->setViewer(PhabricatorUser::getOmnipotentUser()) - ->withMemberPHIDs(array($load_phid)) - ->execute(); - foreach ($merchants as $merchant) { - $cache_data[$load_phid][$merchant->getPHID()] = true; - $did_write = true; - } - } - - if ($did_write) { - $cache->setKey($cache_key, $cache_data); - } - - $results = array(); - foreach ($viewer_phids as $viewer_phid) { - foreach ($merchant_phids as $merchant_phid) { - if (!isset($cache_data[$viewer_phid][$merchant_phid])) { - continue; - } - $results[$viewer_phid][$merchant_phid] = true; - } - } - - return $results; - } - -} diff --git a/src/applications/phortune/query/PhortuneMerchantSearchEngine.php b/src/applications/phortune/query/PhortuneMerchantSearchEngine.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneMerchantSearchEngine.php +++ /dev/null @@ -1,89 +0,0 @@ -needProfileImage(true); - - return $query; - } - - public function buildSearchForm( - AphrontFormView $form, - PhabricatorSavedQuery $saved_query) {} - - protected function getURI($path) { - return '/phortune/merchant/'.$path; - } - - protected function getBuiltinQueryNames() { - $names = array( - 'all' => pht('All Merchants'), - ); - - return $names; - } - - public function buildSavedQueryFromBuiltin($query_key) { - - $query = $this->newSavedQuery(); - $query->setQueryKey($query_key); - - switch ($query_key) { - case 'all': - return $query; - } - - return parent::buildSavedQueryFromBuiltin($query_key); - } - - protected function getRequiredHandlePHIDsForResultList( - array $merchants, - PhabricatorSavedQuery $query) { - return array(); - } - - protected function renderResultList( - array $merchants, - PhabricatorSavedQuery $query, - array $handles) { - assert_instances_of($merchants, 'PhortuneMerchant'); - - $viewer = $this->requireViewer(); - - $list = new PHUIObjectItemListView(); - $list->setUser($viewer); - foreach ($merchants as $merchant) { - $item = id(new PHUIObjectItemView()) - ->setSubhead(pht('Merchant %d', $merchant->getID())) - ->setHeader($merchant->getName()) - ->setHref('/phortune/merchant/'.$merchant->getID().'/') - ->setObject($merchant) - ->setImageURI($merchant->getProfileImageURI()); - - $list->addItem($item); - } - - $result = new PhabricatorApplicationSearchResultView(); - $result->setObjectList($list); - $result->setNoDataString(pht('No merchants found.')); - - return $result; - } -} diff --git a/src/applications/phortune/query/PhortuneMerchantTransactionQuery.php b/src/applications/phortune/query/PhortuneMerchantTransactionQuery.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneMerchantTransactionQuery.php +++ /dev/null @@ -1,10 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withAccountPHIDs(array $phids) { - $this->accountPHIDs = $phids; - return $this; - } - - public function withMerchantPHIDs(array $phids) { - $this->merchantPHIDs = $phids; - return $this; - } - - public function withStatuses(array $statuses) { - $this->statuses = $statuses; - return $this; - } - - public function newResultObject() { - return new PhortunePaymentMethod(); - } - - protected function willFilterPage(array $methods) { - $accounts = id(new PhortuneAccountQuery()) - ->setViewer($this->getViewer()) - ->withPHIDs(mpull($methods, 'getAccountPHID')) - ->execute(); - $accounts = mpull($accounts, null, 'getPHID'); - - foreach ($methods as $key => $method) { - $account = idx($accounts, $method->getAccountPHID()); - if (!$account) { - unset($methods[$key]); - $this->didRejectResult($method); - continue; - } - $method->attachAccount($account); - } - - if (!$methods) { - return $methods; - } - - $merchants = id(new PhortuneMerchantQuery()) - ->setViewer($this->getViewer()) - ->withPHIDs(mpull($methods, 'getMerchantPHID')) - ->execute(); - $merchants = mpull($merchants, null, 'getPHID'); - - foreach ($methods as $key => $method) { - $merchant = idx($merchants, $method->getMerchantPHID()); - if (!$merchant) { - unset($methods[$key]); - $this->didRejectResult($method); - continue; - } - $method->attachMerchant($merchant); - } - - if (!$methods) { - return $methods; - } - - $provider_configs = id(new PhortunePaymentProviderConfigQuery()) - ->setViewer($this->getViewer()) - ->withPHIDs(mpull($methods, 'getProviderPHID')) - ->execute(); - $provider_configs = mpull($provider_configs, null, 'getPHID'); - - foreach ($methods as $key => $method) { - $provider_config = idx($provider_configs, $method->getProviderPHID()); - if (!$provider_config) { - unset($methods[$key]); - $this->didRejectResult($method); - continue; - } - $method->attachProviderConfig($provider_config); - } - - return $methods; - } - - protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) { - $where = parent::buildWhereClauseParts($conn); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'phid IN (%Ls)', - $this->phids); - } - - if ($this->accountPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'accountPHID IN (%Ls)', - $this->accountPHIDs); - } - - if ($this->merchantPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'merchantPHID IN (%Ls)', - $this->merchantPHIDs); - } - - if ($this->statuses !== null) { - $where[] = qsprintf( - $conn, - 'status IN (%Ls)', - $this->statuses); - } - - return $where; - } - - public function getQueryApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - -} diff --git a/src/applications/phortune/query/PhortunePaymentMethodTransactionQuery.php b/src/applications/phortune/query/PhortunePaymentMethodTransactionQuery.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortunePaymentMethodTransactionQuery.php +++ /dev/null @@ -1,10 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withMerchantPHIDs(array $phids) { - $this->merchantPHIDs = $phids; - return $this; - } - - protected function loadPage() { - $table = new PhortunePaymentProviderConfig(); - $conn = $table->establishConnection('r'); - - $rows = queryfx_all( - $conn, - 'SELECT * FROM %T %Q %Q %Q', - $table->getTableName(), - $this->buildWhereClause($conn), - $this->buildOrderClause($conn), - $this->buildLimitClause($conn)); - - return $table->loadAllFromArray($rows); - } - - protected function willFilterPage(array $provider_configs) { - $merchant_phids = mpull($provider_configs, 'getMerchantPHID'); - $merchants = id(new PhortuneMerchantQuery()) - ->setViewer($this->getViewer()) - ->setParentQuery($this) - ->withPHIDs($merchant_phids) - ->execute(); - $merchants = mpull($merchants, null, 'getPHID'); - - foreach ($provider_configs as $key => $config) { - $merchant = idx($merchants, $config->getMerchantPHID()); - if (!$merchant) { - $this->didRejectResult($config); - unset($provider_configs[$key]); - continue; - } - $config->attachMerchant($merchant); - } - - return $provider_configs; - } - - protected function buildWhereClause(AphrontDatabaseConnection $conn) { - $where = array(); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'phid IN (%Ls)', - $this->phids); - } - - if ($this->merchantPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'merchantPHID IN (%Ls)', - $this->merchantPHIDs); - } - - $where[] = $this->buildPagingClause($conn); - - return $this->formatWhereClause($conn, $where); - } - - public function getQueryApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - -} diff --git a/src/applications/phortune/query/PhortunePaymentProviderConfigTransactionQuery.php b/src/applications/phortune/query/PhortunePaymentProviderConfigTransactionQuery.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortunePaymentProviderConfigTransactionQuery.php +++ /dev/null @@ -1,10 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withClassAndRef($class, $ref) { - $this->refMap = array($class => array($ref)); - return $this; - } - - protected function loadPage() { - $table = new PhortuneProduct(); - $conn = $table->establishConnection('r'); - - $rows = queryfx_all( - $conn, - 'SELECT * FROM %T %Q %Q %Q', - $table->getTableName(), - $this->buildWhereClause($conn), - $this->buildOrderClause($conn), - $this->buildLimitClause($conn)); - - $page = $table->loadAllFromArray($rows); - - // NOTE: We're loading product implementations here, but also creating any - // products which do not yet exist. - - $class_map = mgroup($page, 'getProductClass'); - if ($this->refMap) { - $class_map += array_fill_keys(array_keys($this->refMap), array()); - } - - foreach ($class_map as $class => $products) { - $refs = mpull($products, null, 'getProductRef'); - if (isset($this->refMap[$class])) { - $refs += array_fill_keys($this->refMap[$class], null); - } - - $implementations = newv($class, array())->loadImplementationsForRefs( - $this->getViewer(), - array_keys($refs)); - $implementations = mpull($implementations, null, 'getRef'); - - foreach ($implementations as $ref => $implementation) { - $product = idx($refs, $ref); - if ($product === null) { - // If this product does not exist yet, create it and add it to the - // result page. - $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); - $product = PhortuneProduct::initializeNewProduct() - ->setProductClass($class) - ->setProductRef($ref) - ->save(); - unset($unguarded); - - $page[] = $product; - } - - $product->attachImplementation($implementation); - } - } - - return $page; - } - - protected function buildWhereClause(AphrontDatabaseConnection $conn) { - $where = array(); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'phid IN (%Ls)', - $this->phids); - } - - if ($this->refMap !== null) { - $sql = array(); - foreach ($this->refMap as $class => $refs) { - foreach ($refs as $ref) { - $sql[] = qsprintf( - $conn, - '(productClassKey = %s AND productRefKey = %s)', - PhabricatorHash::digestForIndex($class), - PhabricatorHash::digestForIndex($ref)); - } - } - $where[] = qsprintf($conn, '%LO', $sql); - } - - $where[] = $this->buildPagingClause($conn); - - return $this->formatWhereClause($conn, $where); - } - - public function getQueryApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - -} diff --git a/src/applications/phortune/query/PhortunePurchaseQuery.php b/src/applications/phortune/query/PhortunePurchaseQuery.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortunePurchaseQuery.php +++ /dev/null @@ -1,110 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withCartPHIDs(array $cart_phids) { - $this->cartPHIDs = $cart_phids; - return $this; - } - - protected function loadPage() { - $table = new PhortunePurchase(); - $conn = $table->establishConnection('r'); - - $rows = queryfx_all( - $conn, - 'SELECT purchase.* FROM %T purchase %Q %Q %Q', - $table->getTableName(), - $this->buildWhereClause($conn), - $this->buildOrderClause($conn), - $this->buildLimitClause($conn)); - - return $table->loadAllFromArray($rows); - } - - protected function willFilterPage(array $purchases) { - $carts = id(new PhortuneCartQuery()) - ->setViewer($this->getViewer()) - ->setParentQuery($this) - ->withPHIDs(mpull($purchases, 'getCartPHID')) - ->execute(); - $carts = mpull($carts, null, 'getPHID'); - - foreach ($purchases as $key => $purchase) { - $cart = idx($carts, $purchase->getCartPHID()); - if (!$cart) { - unset($purchases[$key]); - continue; - } - $purchase->attachCart($cart); - } - - $products = id(new PhortuneProductQuery()) - ->setViewer($this->getViewer()) - ->setParentQuery($this) - ->withPHIDs(mpull($purchases, 'getProductPHID')) - ->execute(); - $products = mpull($products, null, 'getPHID'); - - foreach ($purchases as $key => $purchase) { - $product = idx($products, $purchase->getProductPHID()); - if (!$product) { - unset($purchases[$key]); - continue; - } - $purchase->attachProduct($product); - } - - - return $purchases; - } - - protected function buildWhereClause(AphrontDatabaseConnection $conn) { - $where = array(); - - $where[] = $this->buildPagingClause($conn); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'purchase.id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'purchase.phid IN (%Ls)', - $this->phids); - } - - if ($this->cartPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'purchase.cartPHID IN (%Ls)', - $this->cartPHIDs); - } - - return $this->formatWhereClause($conn, $where); - } - - public function getQueryApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - -} diff --git a/src/applications/phortune/query/PhortuneSubscriptionQuery.php b/src/applications/phortune/query/PhortuneSubscriptionQuery.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneSubscriptionQuery.php +++ /dev/null @@ -1,200 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs(array $phids) { - $this->phids = $phids; - return $this; - } - - public function withAccountPHIDs(array $account_phids) { - $this->accountPHIDs = $account_phids; - return $this; - } - - public function withMerchantPHIDs(array $merchant_phids) { - $this->merchantPHIDs = $merchant_phids; - return $this; - } - - public function withStatuses(array $statuses) { - $this->statuses = $statuses; - return $this; - } - - public function withPaymentMethodPHIDs(array $method_phids) { - $this->paymentMethodPHIDs = $method_phids; - return $this; - } - - public function needTriggers($need_triggers) { - $this->needTriggers = $need_triggers; - return $this; - } - - public function newResultObject() { - return new PhortuneSubscription(); - } - - protected function willFilterPage(array $subscriptions) { - $accounts = id(new PhortuneAccountQuery()) - ->setViewer($this->getViewer()) - ->withPHIDs(mpull($subscriptions, 'getAccountPHID')) - ->execute(); - $accounts = mpull($accounts, null, 'getPHID'); - - foreach ($subscriptions as $key => $subscription) { - $account = idx($accounts, $subscription->getAccountPHID()); - if (!$account) { - unset($subscriptions[$key]); - $this->didRejectResult($subscription); - continue; - } - $subscription->attachAccount($account); - } - - if (!$subscriptions) { - return $subscriptions; - } - - $merchants = id(new PhortuneMerchantQuery()) - ->setViewer($this->getViewer()) - ->withPHIDs(mpull($subscriptions, 'getMerchantPHID')) - ->execute(); - $merchants = mpull($merchants, null, 'getPHID'); - - foreach ($subscriptions as $key => $subscription) { - $merchant = idx($merchants, $subscription->getMerchantPHID()); - if (!$merchant) { - unset($subscriptions[$key]); - $this->didRejectResult($subscription); - continue; - } - $subscription->attachMerchant($merchant); - } - - if (!$subscriptions) { - return $subscriptions; - } - - $implementations = array(); - - $subscription_map = mgroup($subscriptions, 'getSubscriptionClass'); - foreach ($subscription_map as $class => $class_subscriptions) { - $sub = newv($class, array()); - $impl_objects = $sub->loadImplementationsForRefs( - $this->getViewer(), - mpull($class_subscriptions, 'getSubscriptionRef')); - - $implementations += mpull($impl_objects, null, 'getRef'); - } - - foreach ($subscriptions as $key => $subscription) { - $ref = $subscription->getSubscriptionRef(); - $implementation = idx($implementations, $ref); - if (!$implementation) { - unset($subscriptions[$key]); - $this->didRejectResult($subscription); - continue; - } - $subscription->attachImplementation($implementation); - } - - if (!$subscriptions) { - return $subscriptions; - } - - if ($this->needTriggers) { - $trigger_phids = mpull($subscriptions, 'getTriggerPHID'); - $triggers = id(new PhabricatorWorkerTriggerQuery()) - ->setViewer($this->getViewer()) - ->withPHIDs($trigger_phids) - ->needEvents(true) - ->execute(); - $triggers = mpull($triggers, null, 'getPHID'); - foreach ($subscriptions as $key => $subscription) { - $trigger = idx($triggers, $subscription->getTriggerPHID()); - if (!$trigger) { - unset($subscriptions[$key]); - $this->didRejectResult($subscription); - continue; - } - $subscription->attachTrigger($trigger); - } - } - - return $subscriptions; - } - - protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) { - $where = parent::buildWhereClauseParts($conn); - - if ($this->ids !== null) { - $where[] = qsprintf( - $conn, - 'subscription.id IN (%Ld)', - $this->ids); - } - - if ($this->phids !== null) { - $where[] = qsprintf( - $conn, - 'subscription.phid IN (%Ls)', - $this->phids); - } - - if ($this->accountPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'subscription.accountPHID IN (%Ls)', - $this->accountPHIDs); - } - - if ($this->merchantPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'subscription.merchantPHID IN (%Ls)', - $this->merchantPHIDs); - } - - if ($this->statuses !== null) { - $where[] = qsprintf( - $conn, - 'subscription.status IN (%Ls)', - $this->statuses); - } - - if ($this->paymentMethodPHIDs !== null) { - $where[] = qsprintf( - $conn, - 'subscription.defaultPaymentMethodPHID IN (%Ls)', - $this->paymentMethodPHIDs); - } - - return $where; - } - - protected function getPrimaryTableAlias() { - return 'subscription'; - } - - public function getQueryApplicationClass() { - return 'PhabricatorPhortuneApplication'; - } - -} diff --git a/src/applications/phortune/query/PhortuneSubscriptionSearchEngine.php b/src/applications/phortune/query/PhortuneSubscriptionSearchEngine.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneSubscriptionSearchEngine.php +++ /dev/null @@ -1,155 +0,0 @@ -account = $account; - return $this; - } - - public function getAccount() { - return $this->account; - } - - public function setMerchant(PhortuneMerchant $merchant) { - $this->merchant = $merchant; - return $this; - } - - public function getMerchant() { - return $this->merchant; - } - - public function getResultTypeDescription() { - return pht('Phortune Subscriptions'); - } - - public function getApplicationClassName() { - return 'PhabricatorPhortuneApplication'; - } - - public function buildSavedQueryFromRequest(AphrontRequest $request) { - $saved = new PhabricatorSavedQuery(); - - return $saved; - } - - public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { - $query = id(new PhortuneSubscriptionQuery()); - - $viewer = $this->requireViewer(); - - $merchant = $this->getMerchant(); - $account = $this->getAccount(); - if ($merchant) { - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $merchant, - PhabricatorPolicyCapability::CAN_EDIT); - if (!$can_edit) { - throw new Exception( - pht( - 'You can not query subscriptions for a merchant you do not '. - 'control.')); - } - $query->withMerchantPHIDs(array($merchant->getPHID())); - } else if ($account) { - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $account, - PhabricatorPolicyCapability::CAN_EDIT); - if (!$can_edit) { - throw new Exception( - pht( - 'You can not query subscriptions for an account you are not '. - 'a member of.')); - } - $query->withAccountPHIDs(array($account->getPHID())); - } else { - $accounts = id(new PhortuneAccountQuery()) - ->withMemberPHIDs(array($viewer->getPHID())) - ->execute(); - if ($accounts) { - $query->withAccountPHIDs(mpull($accounts, 'getPHID')); - } else { - throw new Exception(pht('You have no accounts!')); - } - } - - return $query; - } - - public function buildSearchForm( - AphrontFormView $form, - PhabricatorSavedQuery $saved_query) {} - - protected function getURI($path) { - $merchant = $this->getMerchant(); - $account = $this->getAccount(); - if ($merchant) { - return $merchant->getSubscriptionListURI($path); - } else if ($account) { - return $account->getSubscriptionListURI($path); - } else { - return '/phortune/subscription/'.$path; - } - } - - protected function getBuiltinQueryNames() { - $names = array( - 'all' => pht('All Subscriptions'), - ); - - return $names; - } - - public function buildSavedQueryFromBuiltin($query_key) { - - $query = $this->newSavedQuery(); - $query->setQueryKey($query_key); - - switch ($query_key) { - case 'all': - return $query; - } - - return parent::buildSavedQueryFromBuiltin($query_key); - } - - protected function renderResultList( - array $subscriptions, - PhabricatorSavedQuery $query, - array $handles) { - assert_instances_of($subscriptions, 'PhortuneSubscription'); - - $viewer = $this->requireViewer(); - - $table = id(new PhortuneSubscriptionTableView()) - ->setUser($viewer) - ->setSubscriptions($subscriptions); - - $merchant = $this->getMerchant(); - if ($merchant) { - $header = pht('Subscriptions for %s', $merchant->getName()); - $table->setIsMerchantView(true); - } else { - $header = pht('Your Subscriptions'); - } - - $table->setNotice($header); - - $result = new PhabricatorApplicationSearchResultView(); - $result->setTable($table); - - return $result; - } -} diff --git a/src/applications/phortune/query/PhortuneSubscriptionTransactionQuery.php b/src/applications/phortune/query/PhortuneSubscriptionTransactionQuery.php deleted file mode 100644 --- a/src/applications/phortune/query/PhortuneSubscriptionTransactionQuery.php +++ /dev/null @@ -1,10 +0,0 @@ -setBillingName('') - ->setBillingAddress('') - ->attachMerchantPHIDs(array()) - ->attachMemberPHIDs(array()); - } - - public static function createNewAccount( - PhabricatorUser $actor, - PhabricatorContentSource $content_source) { - - $account = self::initializeNewAccount($actor); - - $xactions = array(); - $xactions[] = id(new PhortuneAccountTransaction()) - ->setTransactionType(PhortuneAccountNameTransaction::TRANSACTIONTYPE) - ->setNewValue(pht('Default Account')); - - $xactions[] = id(new PhortuneAccountTransaction()) - ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) - ->setMetadataValue( - 'edge:type', - PhortuneAccountHasMemberEdgeType::EDGECONST) - ->setNewValue( - array( - '=' => array($actor->getPHID() => $actor->getPHID()), - )); - - $editor = id(new PhortuneAccountEditor()) - ->setActor($actor) - ->setContentSource($content_source); - - // We create an account for you the first time you visit Phortune. - $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); - - $editor->applyTransactions($account, $xactions); - - unset($unguarded); - - return $account; - } - - public function newCart( - PhabricatorUser $actor, - PhortuneCartImplementation $implementation, - PhortuneMerchant $merchant) { - - $cart = PhortuneCart::initializeNewCart($actor, $this, $merchant); - - $cart->setCartClass(get_class($implementation)); - $cart->attachImplementation($implementation); - - $implementation->willCreateCart($actor, $cart); - - return $cart->save(); - } - - protected function getConfiguration() { - return array( - self::CONFIG_AUX_PHID => true, - self::CONFIG_COLUMN_SCHEMA => array( - 'name' => 'text255', - 'billingName' => 'text255', - 'billingAddress' => 'text', - ), - ) + parent::getConfiguration(); - } - - public function generatePHID() { - return PhabricatorPHID::generateNewPHID( - PhortuneAccountPHIDType::TYPECONST); - } - - public function getMemberPHIDs() { - return $this->assertAttached($this->memberPHIDs); - } - - public function attachMemberPHIDs(array $phids) { - $this->memberPHIDs = $phids; - return $this; - } - - public function getURI() { - return urisprintf( - '/phortune/account/%d/', - $this->getID()); - } - - public function getDetailsURI() { - return urisprintf( - '/phortune/account/%d/details/', - $this->getID()); - } - - public function getOrdersURI() { - return urisprintf( - '/phortune/account/%d/orders/', - $this->getID()); - } - - public function getOrderListURI($path = '') { - return urisprintf( - '/phortune/account/%d/orders/list/%s', - $this->getID(), - $path); - } - - public function getSubscriptionsURI() { - return urisprintf( - '/phortune/account/%d/subscriptions/', - $this->getID()); - } - - public function getEmailAddressesURI() { - return urisprintf( - '/phortune/account/%d/addresses/', - $this->getID()); - } - - public function getPaymentMethodsURI() { - return urisprintf( - '/phortune/account/%d/methods/', - $this->getID()); - } - - public function getChargesURI() { - return urisprintf( - '/phortune/account/%d/charges/', - $this->getID()); - } - - public function getChargeListURI($path = '') { - return urisprintf( - '/phortune/account/%d/charges/list/%s', - $this->getID(), - $path); - } - - public function attachMerchantPHIDs(array $merchant_phids) { - $this->merchantPHIDs = $merchant_phids; - return $this; - } - - public function getMerchantPHIDs() { - return $this->assertAttached($this->merchantPHIDs); - } - - public function writeMerchantEdge(PhortuneMerchant $merchant) { - $edge_src = $this->getPHID(); - $edge_type = PhortuneAccountHasMerchantEdgeType::EDGECONST; - $edge_dst = $merchant->getPHID(); - - id(new PhabricatorEdgeEditor()) - ->addEdge($edge_src, $edge_type, $edge_dst) - ->save(); - - return $this; - } - - public function isUserAccountMember(PhabricatorUser $user) { - $user_phid = $user->getPHID(); - if (!$user_phid) { - return null; - } - - $member_map = array_fuse($this->getMemberPHIDs()); - - return isset($member_map[$user_phid]); - } - -/* -( PhabricatorApplicationTransactionInterface )------------------------- */ - - - public function getApplicationTransactionEditor() { - return new PhortuneAccountEditor(); - } - - public function getApplicationTransactionTemplate() { - return new PhortuneAccountTransaction(); - } - - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } - - public function getPolicy($capability) { - switch ($capability) { - case PhabricatorPolicyCapability::CAN_VIEW: - case PhabricatorPolicyCapability::CAN_EDIT: - if ($this->getPHID() === null) { - // Allow a user to create an account for themselves. - return PhabricatorPolicies::POLICY_USER; - } else { - return PhabricatorPolicies::POLICY_NOONE; - } - } - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - if ($this->isUserAccountMember($viewer)) { - return true; - } - - // See T13366. If the viewer can edit any merchant that this payment - // account has a relationship with, they can see the payment account. - if ($capability == PhabricatorPolicyCapability::CAN_VIEW) { - $viewer_phids = array($viewer->getPHID()); - $merchant_phids = $this->getMerchantPHIDs(); - - $any_edit = PhortuneMerchantQuery::canViewersEditMerchants( - $viewer_phids, - $merchant_phids); - - if ($any_edit) { - return true; - } - } - - return false; - } - - public function describeAutomaticCapability($capability) { - return array( - pht('Members of an account can always view and edit it.'), - pht('Merchants an account has established a relationship can view it.'), - ); - } - - -} diff --git a/src/applications/phortune/storage/PhortuneAccountEmail.php b/src/applications/phortune/storage/PhortuneAccountEmail.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortuneAccountEmail.php +++ /dev/null @@ -1,152 +0,0 @@ - true, - self::CONFIG_COLUMN_SCHEMA => array( - 'address' => 'sort128', - 'status' => 'text32', - 'addressKey' => 'text32', - 'accessKey' => 'text32', - ), - self::CONFIG_KEY_SCHEMA => array( - 'key_account' => array( - 'columns' => array('accountPHID', 'address'), - 'unique' => true, - ), - 'key_address' => array( - 'columns' => array('addressKey'), - ), - ), - ) + parent::getConfiguration(); - } - - public function getPHIDType() { - return PhortuneAccountEmailPHIDType::TYPECONST; - } - - public static function initializeNewAddress( - PhortuneAccount $account, - $author_phid) { - - $address_key = Filesystem::readRandomCharacters(16); - $access_key = Filesystem::readRandomCharacters(16); - $default_status = PhortuneAccountEmailStatus::getDefaultStatusConstant(); - - return id(new self()) - ->setAuthorPHID($author_phid) - ->setAccountPHID($account->getPHID()) - ->setStatus($default_status) - ->attachAccount($account) - ->setAddressKey($address_key) - ->setAccessKey($access_key); - } - - public function attachAccount(PhortuneAccount $account) { - $this->account = $account; - return $this; - } - - public function getAccount() { - return $this->assertAttached($this->account); - } - - public function getObjectName() { - return pht('Account Email %d', $this->getID()); - } - - public function getURI() { - return urisprintf( - '/phortune/account/%d/addresses/%d/', - $this->getAccount()->getID(), - $this->getID()); - } - - public function getExternalURI() { - return urisprintf( - '/phortune/external/%s/%s/', - $this->getAddressKey(), - $this->getAccessKey()); - } - - public function getUnsubscribeURI() { - return urisprintf( - '/phortune/external/%s/%s/unsubscribe/', - $this->getAddressKey(), - $this->getAccessKey()); - } - - public function getExternalOrderURI(PhortuneCart $cart) { - return urisprintf( - '/phortune/external/%s/%s/order/%d/', - $this->getAddressKey(), - $this->getAccessKey(), - $cart->getID()); - } - - public function getExternalOrderPrintURI(PhortuneCart $cart) { - return urisprintf( - '/phortune/external/%s/%s/order/%d/print/', - $this->getAddressKey(), - $this->getAccessKey(), - $cart->getID()); - } - - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } - - public function getPolicy($capability) { - return PhabricatorPolicies::getMostOpenPolicy(); - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - return false; - } - - -/* -( PhabricatorExtendedPolicyInterface )--------------------------------- */ - - - public function getExtendedPolicy($capability, PhabricatorUser $viewer) { - return array( - array($this->getAccount(), $capability), - ); - } - - -/* -( PhabricatorApplicationTransactionInterface )------------------------- */ - - - public function getApplicationTransactionEditor() { - return new PhortuneAccountEmailEditor(); - } - - public function getApplicationTransactionTemplate() { - return new PhortuneAccountEmailTransaction(); - } - -} diff --git a/src/applications/phortune/storage/PhortuneAccountEmailTransaction.php b/src/applications/phortune/storage/PhortuneAccountEmailTransaction.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortuneAccountEmailTransaction.php +++ /dev/null @@ -1,18 +0,0 @@ -setAuthorPHID($actor->getPHID()) - ->setStatus(self::STATUS_BUILDING) - ->setAccountPHID($account->getPHID()) - ->setIsInvoice(0) - ->attachAccount($account) - ->setMerchantPHID($merchant->getPHID()) - ->attachMerchant($merchant); - - $cart->account = $account; - $cart->purchases = array(); - - return $cart; - } - - public function newPurchase( - PhabricatorUser $actor, - PhortuneProduct $product) { - - $purchase = PhortunePurchase::initializeNewPurchase($actor, $product) - ->setAccountPHID($this->getAccount()->getPHID()) - ->setCartPHID($this->getPHID()) - ->save(); - - $this->purchases[] = $purchase; - - return $purchase; - } - - public static function getStatusNameMap() { - return array( - self::STATUS_BUILDING => pht('Building'), - self::STATUS_READY => pht('Ready'), - self::STATUS_PURCHASING => pht('Purchasing'), - self::STATUS_CHARGED => pht('Charged'), - self::STATUS_HOLD => pht('Hold'), - self::STATUS_REVIEW => pht('Review'), - self::STATUS_PURCHASED => pht('Purchased'), - ); - } - - public static function getNameForStatus($status) { - return idx(self::getStatusNameMap(), $status, $status); - } - - public function activateCart() { - $this->openTransaction(); - $this->beginReadLocking(); - - $copy = clone $this; - $copy->reload(); - - if ($copy->getStatus() !== self::STATUS_BUILDING) { - throw new Exception( - pht( - 'Cart has wrong status ("%s") to call %s.', - $copy->getStatus(), - 'willApplyCharge()')); - } - - $this->setStatus(self::STATUS_READY)->save(); - - $this->endReadLocking(); - $this->saveTransaction(); - - $this->recordCartTransaction(PhortuneCartTransaction::TYPE_CREATED); - - return $this; - } - - public function willApplyCharge( - PhabricatorUser $actor, - PhortunePaymentProvider $provider, - PhortunePaymentMethod $method = null) { - - $account = $this->getAccount(); - - $charge = PhortuneCharge::initializeNewCharge() - ->setAccountPHID($account->getPHID()) - ->setCartPHID($this->getPHID()) - ->setAuthorPHID($actor->getPHID()) - ->setMerchantPHID($this->getMerchant()->getPHID()) - ->setProviderPHID($provider->getProviderConfig()->getPHID()) - ->setAmountAsCurrency($this->getTotalPriceAsCurrency()); - - if ($method) { - if (!$method->isActive()) { - throw new Exception( - pht( - 'Attempting to apply a charge using an inactive '. - 'payment method ("%s")!', - $method->getPHID())); - } - $charge->setPaymentMethodPHID($method->getPHID()); - } - - $this->openTransaction(); - $this->beginReadLocking(); - - $copy = clone $this; - $copy->reload(); - - if ($copy->getStatus() !== self::STATUS_READY) { - throw new Exception( - pht( - 'Cart has wrong status ("%s") to call %s, expected "%s".', - $copy->getStatus(), - 'willApplyCharge()', - self::STATUS_READY)); - } - - $charge->save(); - $this->setStatus(self::STATUS_PURCHASING)->save(); - - $this->endReadLocking(); - $this->saveTransaction(); - - return $charge; - } - - public function didHoldCharge(PhortuneCharge $charge) { - $charge->setStatus(PhortuneCharge::STATUS_HOLD); - - $this->openTransaction(); - $this->beginReadLocking(); - - $copy = clone $this; - $copy->reload(); - - if ($copy->getStatus() !== self::STATUS_PURCHASING) { - throw new Exception( - pht( - 'Cart has wrong status ("%s") to call %s, expected "%s".', - $copy->getStatus(), - 'didHoldCharge()', - self::STATUS_PURCHASING)); - } - - $charge->save(); - $this->setStatus(self::STATUS_HOLD)->save(); - - $this->endReadLocking(); - $this->saveTransaction(); - - $this->recordCartTransaction(PhortuneCartTransaction::TYPE_HOLD); - } - - public function didApplyCharge(PhortuneCharge $charge) { - $charge->setStatus(PhortuneCharge::STATUS_CHARGED); - - $this->openTransaction(); - $this->beginReadLocking(); - - $copy = clone $this; - $copy->reload(); - - if (($copy->getStatus() !== self::STATUS_PURCHASING) && - ($copy->getStatus() !== self::STATUS_HOLD)) { - throw new Exception( - pht( - 'Cart has wrong status ("%s") to call %s.', - $copy->getStatus(), - 'didApplyCharge()')); - } - - $charge->save(); - $this->setStatus(self::STATUS_CHARGED)->save(); - - $this->endReadLocking(); - $this->saveTransaction(); - - // TODO: Perform purchase review. Here, we would apply rules to determine - // whether the charge needs manual review (maybe making the decision via - // Herald, configuration, or by examining provider fraud data). For now, - // don't require review. - $needs_review = false; - - if ($needs_review) { - $this->willReviewCart(); - } else { - $this->didReviewCart(); - } - - return $this; - } - - public function willReviewCart() { - $this->openTransaction(); - $this->beginReadLocking(); - - $copy = clone $this; - $copy->reload(); - - if (($copy->getStatus() !== self::STATUS_CHARGED)) { - throw new Exception( - pht( - 'Cart has wrong status ("%s") to call %s!', - $copy->getStatus(), - 'willReviewCart()')); - } - - $this->setStatus(self::STATUS_REVIEW)->save(); - - $this->endReadLocking(); - $this->saveTransaction(); - - $this->recordCartTransaction(PhortuneCartTransaction::TYPE_REVIEW); - - return $this; - } - - public function didReviewCart() { - $this->openTransaction(); - $this->beginReadLocking(); - - $copy = clone $this; - $copy->reload(); - - if (($copy->getStatus() !== self::STATUS_CHARGED) && - ($copy->getStatus() !== self::STATUS_REVIEW)) { - throw new Exception( - pht( - 'Cart has wrong status ("%s") to call %s!', - $copy->getStatus(), - 'didReviewCart()')); - } - - foreach ($this->purchases as $purchase) { - $purchase->getProduct()->didPurchaseProduct($purchase); - } - - $this->setStatus(self::STATUS_PURCHASED)->save(); - - $this->endReadLocking(); - $this->saveTransaction(); - - $this->recordCartTransaction(PhortuneCartTransaction::TYPE_PURCHASED); - - return $this; - } - - public function didFailCharge(PhortuneCharge $charge) { - $charge->setStatus(PhortuneCharge::STATUS_FAILED); - - $this->openTransaction(); - $this->beginReadLocking(); - - $copy = clone $this; - $copy->reload(); - - if (($copy->getStatus() !== self::STATUS_PURCHASING) && - ($copy->getStatus() !== self::STATUS_HOLD)) { - throw new Exception( - pht( - 'Cart has wrong status ("%s") to call %s.', - $copy->getStatus(), - 'didFailCharge()')); - } - - $charge->save(); - - // Move the cart back into STATUS_READY so the user can try - // making the purchase again. - $this->setStatus(self::STATUS_READY)->save(); - - $this->endReadLocking(); - $this->saveTransaction(); - - return $this; - } - - - public function willRefundCharge( - PhabricatorUser $actor, - PhortunePaymentProvider $provider, - PhortuneCharge $charge, - PhortuneCurrency $amount) { - - if (!$amount->isPositive()) { - throw new Exception( - pht('Trying to refund non-positive amount of money!')); - } - - if ($amount->isGreaterThan($charge->getAmountRefundableAsCurrency())) { - throw new Exception( - pht('Trying to refund more money than remaining on charge!')); - } - - if ($charge->getRefundedChargePHID()) { - throw new Exception( - pht('Trying to refund a refund!')); - } - - if (($charge->getStatus() !== PhortuneCharge::STATUS_CHARGED) && - ($charge->getStatus() !== PhortuneCharge::STATUS_HOLD)) { - throw new Exception( - pht('Trying to refund an uncharged charge!')); - } - - $refund_charge = PhortuneCharge::initializeNewCharge() - ->setAccountPHID($this->getAccount()->getPHID()) - ->setCartPHID($this->getPHID()) - ->setAuthorPHID($actor->getPHID()) - ->setMerchantPHID($this->getMerchant()->getPHID()) - ->setProviderPHID($provider->getProviderConfig()->getPHID()) - ->setPaymentMethodPHID($charge->getPaymentMethodPHID()) - ->setRefundedChargePHID($charge->getPHID()) - ->setAmountAsCurrency($amount->negate()); - - $charge->openTransaction(); - $charge->beginReadLocking(); - - $copy = clone $charge; - $copy->reload(); - - if ($copy->getRefundingPHID() !== null) { - throw new Exception( - pht('Trying to refund a charge which is already refunding!')); - } - - $refund_charge->save(); - $charge->setRefundingPHID($refund_charge->getPHID()); - $charge->save(); - - $charge->endReadLocking(); - $charge->saveTransaction(); - - return $refund_charge; - } - - public function didRefundCharge( - PhortuneCharge $charge, - PhortuneCharge $refund) { - - $refund->setStatus(PhortuneCharge::STATUS_CHARGED); - - $this->openTransaction(); - $this->beginReadLocking(); - - $copy = clone $charge; - $copy->reload(); - - if ($charge->getRefundingPHID() !== $refund->getPHID()) { - throw new Exception( - pht('Charge is in the wrong refunding state!')); - } - - $charge->setRefundingPHID(null); - - // NOTE: There's some trickiness here to get the signs right. Both - // these values are positive but the refund has a negative value. - $total_refunded = $charge - ->getAmountRefundedAsCurrency() - ->add($refund->getAmountAsCurrency()->negate()); - - $charge->setAmountRefundedAsCurrency($total_refunded); - $charge->save(); - $refund->save(); - - $this->endReadLocking(); - $this->saveTransaction(); - - $amount = $refund->getAmountAsCurrency()->negate(); - foreach ($this->purchases as $purchase) { - $purchase->getProduct()->didRefundProduct($purchase, $amount); - } - - return $this; - } - - public function didFailRefund( - PhortuneCharge $charge, - PhortuneCharge $refund) { - - $refund->setStatus(PhortuneCharge::STATUS_FAILED); - - $this->openTransaction(); - $this->beginReadLocking(); - - $copy = clone $charge; - $copy->reload(); - - if ($charge->getRefundingPHID() !== $refund->getPHID()) { - throw new Exception( - pht('Charge is in the wrong refunding state!')); - } - - $charge->setRefundingPHID(null); - $charge->save(); - $refund->save(); - - $this->endReadLocking(); - $this->saveTransaction(); - } - - private function recordCartTransaction($type) { - $omnipotent_user = PhabricatorUser::getOmnipotentUser(); - $phortune_phid = id(new PhabricatorPhortuneApplication())->getPHID(); - - $xactions = array(); - - $xactions[] = id(new PhortuneCartTransaction()) - ->setTransactionType($type) - ->setNewValue(true); - - $content_source = PhabricatorContentSource::newForSource( - PhabricatorPhortuneContentSource::SOURCECONST); - - $editor = id(new PhortuneCartEditor()) - ->setActor($omnipotent_user) - ->setActingAsPHID($phortune_phid) - ->setContentSource($content_source) - ->setContinueOnMissingFields(true) - ->setContinueOnNoEffect(true); - - $editor->applyTransactions($this, $xactions); - } - - public function getName() { - return $this->getImplementation()->getName($this); - } - - public function getDoneURI() { - return $this->getImplementation()->getDoneURI($this); - } - - public function getDoneActionName() { - return $this->getImplementation()->getDoneActionName($this); - } - - public function getCancelURI() { - return $this->getImplementation()->getCancelURI($this); - } - - public function getDescription() { - return $this->getImplementation()->getDescription($this); - } - - public function getDetailURI() { - return urisprintf( - '/phortune/cart/%d/', - $this->getID()); - } - - public function getCheckoutURI() { - return '/phortune/cart/'.$this->getID().'/checkout/'; - } - - public function canCancelOrder() { - try { - $this->assertCanCancelOrder(); - return true; - } catch (Exception $ex) { - return false; - } - } - - public function canRefundOrder() { - try { - $this->assertCanRefundOrder(); - return true; - } catch (Exception $ex) { - return false; - } - } - - public function canVoidOrder() { - try { - $this->assertCanVoidOrder(); - return true; - } catch (Exception $ex) { - return false; - } - } - - public function assertCanCancelOrder() { - switch ($this->getStatus()) { - case self::STATUS_BUILDING: - throw new Exception( - pht( - 'This order can not be cancelled because the application has not '. - 'finished building it yet.')); - case self::STATUS_READY: - throw new Exception( - pht( - 'This order can not be cancelled because it has not been placed.')); - } - - return $this->getImplementation()->assertCanCancelOrder($this); - } - - public function assertCanRefundOrder() { - switch ($this->getStatus()) { - case self::STATUS_BUILDING: - throw new Exception( - pht( - 'This order can not be refunded because the application has not '. - 'finished building it yet.')); - case self::STATUS_READY: - throw new Exception( - pht( - 'This order can not be refunded because it has not been placed.')); - } - - return $this->getImplementation()->assertCanRefundOrder($this); - } - - public function assertCanVoidOrder() { - if (!$this->getIsInvoice()) { - throw new Exception( - pht( - 'This order can not be voided because it is not an invoice.')); - } - - switch ($this->getStatus()) { - case self::STATUS_READY: - break; - default: - throw new Exception( - pht( - 'This order can not be voided because it is not ready for '. - 'payment.')); - } - - return null; - } - - - protected function getConfiguration() { - return array( - self::CONFIG_AUX_PHID => true, - self::CONFIG_SERIALIZATION => array( - 'metadata' => self::SERIALIZATION_JSON, - ), - self::CONFIG_COLUMN_SCHEMA => array( - 'status' => 'text32', - 'cartClass' => 'text128', - 'mailKey' => 'bytes20', - 'subscriptionPHID' => 'phid?', - 'isInvoice' => 'bool', - ), - self::CONFIG_KEY_SCHEMA => array( - 'key_account' => array( - 'columns' => array('accountPHID'), - ), - 'key_merchant' => array( - 'columns' => array('merchantPHID'), - ), - 'key_subscription' => array( - 'columns' => array('subscriptionPHID'), - ), - ), - ) + parent::getConfiguration(); - } - - public function generatePHID() { - return PhabricatorPHID::generateNewPHID( - PhortuneCartPHIDType::TYPECONST); - } - - public function save() { - if (!$this->getMailKey()) { - $this->setMailKey(Filesystem::readRandomCharacters(20)); - } - return parent::save(); - } - - public function attachPurchases(array $purchases) { - assert_instances_of($purchases, 'PhortunePurchase'); - $this->purchases = $purchases; - return $this; - } - - public function getPurchases() { - return $this->assertAttached($this->purchases); - } - - public function attachAccount(PhortuneAccount $account) { - $this->account = $account; - return $this; - } - - public function getAccount() { - return $this->assertAttached($this->account); - } - - public function attachMerchant(PhortuneMerchant $merchant) { - $this->merchant = $merchant; - return $this; - } - - public function getMerchant() { - return $this->assertAttached($this->merchant); - } - - public function attachImplementation( - PhortuneCartImplementation $implementation) { - $this->implementation = $implementation; - return $this; - } - - public function getImplementation() { - return $this->assertAttached($this->implementation); - } - - public function getTotalPriceAsCurrency() { - $prices = array(); - foreach ($this->getPurchases() as $purchase) { - $prices[] = $purchase->getTotalPriceAsCurrency(); - } - - return PhortuneCurrency::newFromList($prices); - } - - public function setMetadataValue($key, $value) { - $this->metadata[$key] = $value; - return $this; - } - - public function getMetadataValue($key, $default = null) { - return idx($this->metadata, $key, $default); - } - - public function getObjectName() { - return pht('Order %d', $this->getID()); - } - - -/* -( PhabricatorApplicationTransactionInterface )------------------------- */ - - - public function getApplicationTransactionEditor() { - return new PhortuneCartEditor(); - } - - public function getApplicationTransactionTemplate() { - return new PhortuneCartTransaction(); - } - - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } - - public function getPolicy($capability) { - return PhabricatorPolicies::getMostOpenPolicy(); - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - if ($capability === PhabricatorPolicyCapability::CAN_VIEW) { - $any_edit = PhortuneMerchantQuery::canViewersEditMerchants( - array($viewer->getPHID()), - array($this->getMerchantPHID())); - if ($any_edit) { - return true; - } - } - - return false; - } - - -/* -( PhabricatorExtendedPolicyInterface )--------------------------------- */ - - - public function getExtendedPolicy($capability, PhabricatorUser $viewer) { - if ($this->hasAutomaticCapability($capability, $viewer)) { - return array(); - } - - return array( - array( - $this->getAccount(), - PhabricatorPolicyCapability::CAN_EDIT, - ), - ); - } - -} diff --git a/src/applications/phortune/storage/PhortuneCartTransaction.php b/src/applications/phortune/storage/PhortuneCartTransaction.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortuneCartTransaction.php +++ /dev/null @@ -1,87 +0,0 @@ -getTransactionType()) { - case self::TYPE_CREATED: - return true; - } - - return parent::shouldHideForMail($xactions); - } - - public function getTitle() { - $old = $this->getOldValue(); - $new = $this->getNewValue(); - - switch ($this->getTransactionType()) { - case self::TYPE_CREATED: - return pht('This order was created.'); - case self::TYPE_HOLD: - return pht('This order was put on hold until payment clears.'); - case self::TYPE_REVIEW: - return pht( - 'This order was flagged for manual processing by the merchant.'); - case self::TYPE_CANCEL: - return pht('This order was cancelled.'); - case self::TYPE_REFUND: - return pht('This order was refunded.'); - case self::TYPE_PURCHASED: - return pht('Payment for this order was completed.'); - case self::TYPE_INVOICED: - return pht('This order was invoiced.'); - } - - return parent::getTitle(); - } - - public function getTitleForMail() { - switch ($this->getTransactionType()) { - case self::TYPE_INVOICED: - return pht('You have a new invoice due.'); - } - - return parent::getTitleForMail(); - } - - public function getActionName() { - switch ($this->getTransactionType()) { - case self::TYPE_CREATED: - return pht('Created'); - case self::TYPE_HOLD: - return pht('Hold'); - case self::TYPE_REVIEW: - return pht('Review'); - case self::TYPE_CANCEL: - return pht('Cancelled'); - case self::TYPE_REFUND: - return pht('Refunded'); - case self::TYPE_PURCHASED: - return pht('Complete'); - case self::TYPE_INVOICED: - return pht('New Invoice'); - } - - return parent::getActionName(); - } - - -} diff --git a/src/applications/phortune/storage/PhortuneCharge.php b/src/applications/phortune/storage/PhortuneCharge.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortuneCharge.php +++ /dev/null @@ -1,205 +0,0 @@ -setStatus(self::STATUS_CHARGING) - ->setAmountRefundedAsCurrency(PhortuneCurrency::newEmptyCurrency()); - } - - protected function getConfiguration() { - return array( - self::CONFIG_AUX_PHID => true, - self::CONFIG_SERIALIZATION => array( - 'metadata' => self::SERIALIZATION_JSON, - ), - self::CONFIG_APPLICATION_SERIALIZERS => array( - 'amountAsCurrency' => new PhortuneCurrencySerializer(), - 'amountRefundedAsCurrency' => new PhortuneCurrencySerializer(), - ), - self::CONFIG_COLUMN_SCHEMA => array( - 'paymentMethodPHID' => 'phid?', - 'refundedChargePHID' => 'phid?', - 'refundingPHID' => 'phid?', - 'amountAsCurrency' => 'text64', - 'amountRefundedAsCurrency' => 'text64', - 'status' => 'text32', - ), - self::CONFIG_KEY_SCHEMA => array( - 'key_cart' => array( - 'columns' => array('cartPHID'), - ), - 'key_account' => array( - 'columns' => array('accountPHID'), - ), - 'key_merchant' => array( - 'columns' => array('merchantPHID'), - ), - 'key_provider' => array( - 'columns' => array('providerPHID'), - ), - ), - ) + parent::getConfiguration(); - } - - public static function getStatusNameMap() { - return array( - self::STATUS_CHARGING => pht('Charging'), - self::STATUS_CHARGED => pht('Charged'), - self::STATUS_HOLD => pht('Hold'), - self::STATUS_FAILED => pht('Failed'), - ); - } - - public static function getNameForStatus($status) { - return idx(self::getStatusNameMap(), $status, pht('Unknown')); - } - - public function isRefund() { - return $this->getAmountAsCurrency()->negate()->isPositive(); - } - - public function getStatusForDisplay() { - if ($this->getStatus() == self::STATUS_CHARGED) { - if ($this->getRefundedChargePHID()) { - return pht('Refund'); - } - - $refunded = $this->getAmountRefundedAsCurrency(); - - if ($refunded->isPositive()) { - if ($refunded->isEqualTo($this->getAmountAsCurrency())) { - return pht('Fully Refunded'); - } else { - return pht('%s Refunded', $refunded->formatForDisplay()); - } - } - } - - return self::getNameForStatus($this->getStatus()); - } - - public function generatePHID() { - return PhabricatorPHID::generateNewPHID( - PhortuneChargePHIDType::TYPECONST); - } - - public function getMetadataValue($key, $default = null) { - return idx($this->metadata, $key, $default); - } - - public function setMetadataValue($key, $value) { - $this->metadata[$key] = $value; - return $this; - } - - public function getAccount() { - return $this->assertAttached($this->account); - } - - public function attachAccount(PhortuneAccount $account) { - $this->account = $account; - return $this; - } - - public function getCart() { - return $this->assertAttached($this->cart); - } - - public function attachCart(PhortuneCart $cart = null) { - $this->cart = $cart; - return $this; - } - - public function getAmountRefundableAsCurrency() { - $amount = $this->getAmountAsCurrency(); - $refunded = $this->getAmountRefundedAsCurrency(); - - // We can't refund negative amounts of money, since it does not make - // sense and is not possible in the various payment APIs. - - $refundable = $amount->subtract($refunded); - if ($refundable->isPositive()) { - return $refundable; - } else { - return PhortuneCurrency::newEmptyCurrency(); - } - } - - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } - - public function getPolicy($capability) { - return PhabricatorPolicies::getMostOpenPolicy(); - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - if ($capability === PhabricatorPolicyCapability::CAN_VIEW) { - $any_edit = PhortuneMerchantQuery::canViewersEditMerchants( - array($viewer->getPHID()), - array($this->getMerchantPHID())); - if ($any_edit) { - return true; - } - } - - return false; - } - - -/* -( PhabricatorExtendedPolicyInterface )--------------------------------- */ - - - public function getExtendedPolicy($capability, PhabricatorUser $viewer) { - if ($this->hasAutomaticCapability($capability, $viewer)) { - return array(); - } - - return array( - array( - $this->getAccount(), - PhabricatorPolicyCapability::CAN_EDIT, - ), - ); - } - -} diff --git a/src/applications/phortune/storage/PhortuneDAO.php b/src/applications/phortune/storage/PhortuneDAO.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortuneDAO.php +++ /dev/null @@ -1,9 +0,0 @@ -attachMemberPHIDs(array()) - ->setContactInfo('') - ->setInvoiceEmail('') - ->setInvoiceFooter(''); - } - - protected function getConfiguration() { - return array( - self::CONFIG_AUX_PHID => true, - self::CONFIG_COLUMN_SCHEMA => array( - 'name' => 'text255', - 'description' => 'text', - 'contactInfo' => 'text', - 'invoiceEmail' => 'text255', - 'invoiceFooter' => 'text', - 'profileImagePHID' => 'phid?', - ), - ) + parent::getConfiguration(); - } - - public function generatePHID() { - return PhabricatorPHID::generateNewPHID( - PhortuneMerchantPHIDType::TYPECONST); - } - - public function getMemberPHIDs() { - return $this->assertAttached($this->memberPHIDs); - } - - public function attachMemberPHIDs(array $member_phids) { - $this->memberPHIDs = $member_phids; - return $this; - } - - public function getURI() { - return '/phortune/merchant/'.$this->getID().'/'; - } - - public function getProfileImageURI() { - return $this->getProfileImageFile()->getBestURI(); - } - - public function attachProfileImageFile(PhabricatorFile $file) { - $this->profileImageFile = $file; - return $this; - } - - public function getProfileImageFile() { - return $this->assertAttached($this->profileImageFile); - } - - public function getObjectName() { - return pht('Merchant %d', $this->getID()); - } - - public function getDetailsURI() { - return urisprintf( - '/phortune/merchant/%d/details/', - $this->getID()); - } - - public function getOrdersURI() { - return urisprintf( - '/phortune/merchant/%d/orders/', - $this->getID()); - } - - public function getOrderListURI($path = '') { - return urisprintf( - '/phortune/merchant/%d/orders/list/%s', - $this->getID(), - $path); - } - - public function getSubscriptionsURI() { - return urisprintf( - '/phortune/merchant/%d/subscriptions/', - $this->getID()); - } - - public function getSubscriptionListURI($path = '') { - return urisprintf( - '/phortune/merchant/%d/subscriptions/list/%s', - $this->getID(), - $path); - } - - public function getManagersURI() { - return urisprintf( - '/phortune/merchant/%d/managers/', - $this->getID()); - } - - public function getPaymentProvidersURI() { - return urisprintf( - '/phortune/merchant/%d/providers/', - $this->getID()); - } - -/* -( PhabricatorApplicationTransactionInterface )------------------------- */ - - - public function getApplicationTransactionEditor() { - return new PhortuneMerchantEditor(); - } - - public function getApplicationTransactionTemplate() { - return new PhortuneMerchantTransaction(); - } - - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } - - public function getPolicy($capability) { - switch ($capability) { - case PhabricatorPolicyCapability::CAN_VIEW: - return PhabricatorPolicies::getMostOpenPolicy(); - case PhabricatorPolicyCapability::CAN_EDIT: - return PhabricatorPolicies::POLICY_NOONE; - } - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - $members = array_fuse($this->getMemberPHIDs()); - if (isset($members[$viewer->getPHID()])) { - return true; - } - - return false; - } - - public function describeAutomaticCapability($capability) { - return pht("A merchant's members can always view and edit it."); - } - -} diff --git a/src/applications/phortune/storage/PhortuneMerchantTransaction.php b/src/applications/phortune/storage/PhortuneMerchantTransaction.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortuneMerchantTransaction.php +++ /dev/null @@ -1,18 +0,0 @@ - true, - self::CONFIG_SERIALIZATION => array( - 'metadata' => self::SERIALIZATION_JSON, - ), - self::CONFIG_COLUMN_SCHEMA => array( - 'name' => 'text255', - 'status' => 'text64', - 'brand' => 'text64', - 'expires' => 'text16', - 'lastFourDigits' => 'text16', - ), - self::CONFIG_KEY_SCHEMA => array( - 'key_account' => array( - 'columns' => array('accountPHID', 'status'), - ), - 'key_merchant' => array( - 'columns' => array('merchantPHID', 'accountPHID'), - ), - ), - ) + parent::getConfiguration(); - } - - public function generatePHID() { - return PhabricatorPHID::generateNewPHID( - PhortunePaymentMethodPHIDType::TYPECONST); - } - - public function attachAccount(PhortuneAccount $account) { - $this->account = $account; - return $this; - } - - public function getAccount() { - return $this->assertAttached($this->account); - } - - public function attachMerchant(PhortuneMerchant $merchant) { - $this->merchant = $merchant; - return $this; - } - - public function getMerchant() { - return $this->assertAttached($this->merchant); - } - - public function attachProviderConfig(PhortunePaymentProviderConfig $config) { - $this->providerConfig = $config; - return $this; - } - - public function getProviderConfig() { - return $this->assertAttached($this->providerConfig); - } - - public function getDescription() { - $provider = $this->buildPaymentProvider(); - - $expires = $this->getDisplayExpires(); - $description = $provider->getPaymentMethodProviderDescription(); - - return pht("Expires %s \xC2\xB7 %s", $expires, $description); - } - - public function getMetadataValue($key, $default = null) { - return idx($this->getMetadata(), $key, $default); - } - - public function setMetadataValue($key, $value) { - $this->metadata[$key] = $value; - return $this; - } - - public function buildPaymentProvider() { - return $this->getProviderConfig()->buildProvider(); - } - - public function getDisplayName() { - if (strlen($this->name)) { - return $this->name; - } - - $provider = $this->buildPaymentProvider(); - return $provider->getDefaultPaymentMethodDisplayName($this); - } - - public function getFullDisplayName() { - return pht('%s (%s)', $this->getDisplayName(), $this->getSummary()); - } - - public function getSummary() { - return pht('%s %s', $this->getBrand(), $this->getLastFourDigits()); - } - - public function setExpires($year, $month) { - $this->expires = $year.'-'.$month; - return $this; - } - - public function getDisplayExpires() { - list($year, $month) = explode('-', $this->getExpires()); - $month = sprintf('%02d', $month); - $year = substr($year, -2); - return $month.'/'.$year; - } - - public function isActive() { - return ($this->getStatus() === self::STATUS_ACTIVE); - } - - public function getURI() { - return urisprintf( - '/phortune/account/%d/methods/%d/', - $this->getAccount()->getID(), - $this->getID()); - } - - public function getObjectName() { - return pht('Payment Method %d', $this->getID()); - } - - -/* -( PhabricatorApplicationTransactionInterface )------------------------- */ - - - public function getApplicationTransactionEditor() { - return new PhortunePaymentMethodEditor(); - } - - public function getApplicationTransactionTemplate() { - return new PhortunePaymentMethodTransaction(); - } - - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } - - public function getPolicy($capability) { - return PhabricatorPolicies::getMostOpenPolicy(); - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - // See T13366. If you can edit the merchant associated with this payment - // method, you can view the payment method. - if ($capability === PhabricatorPolicyCapability::CAN_VIEW) { - $any_edit = PhortuneMerchantQuery::canViewersEditMerchants( - array($viewer->getPHID()), - array($this->getMerchantPHID())); - if ($any_edit) { - return true; - } - } - - return false; - } - - -/* -( PhabricatorExtendedPolicyInterface )--------------------------------- */ - - - public function getExtendedPolicy($capability, PhabricatorUser $viewer) { - if ($this->hasAutomaticCapability($capability, $viewer)) { - return array(); - } - - // See T13366. For blanket view and edit permissions on all payment - // methods, you must be able to edit the associated account. - return array( - array( - $this->getAccount(), - PhabricatorPolicyCapability::CAN_EDIT, - ), - ); - } - - -/* -( PhabricatorPolicyCodexInterface )------------------------------------ */ - - - public function newPolicyCodex() { - return new PhortunePaymentMethodPolicyCodex(); - } - -} diff --git a/src/applications/phortune/storage/PhortunePaymentMethodTransaction.php b/src/applications/phortune/storage/PhortunePaymentMethodTransaction.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortunePaymentMethodTransaction.php +++ /dev/null @@ -1,18 +0,0 @@ -setMerchantPHID($merchant->getPHID()) - ->attachMerchant($merchant) - ->setIsEnabled(1); - } - - protected function getConfiguration() { - return array( - self::CONFIG_AUX_PHID => true, - self::CONFIG_SERIALIZATION => array( - 'metadata' => self::SERIALIZATION_JSON, - ), - self::CONFIG_COLUMN_SCHEMA => array( - 'providerClassKey' => 'bytes12', - 'providerClass' => 'text128', - 'isEnabled' => 'bool', - ), - self::CONFIG_KEY_SCHEMA => array( - 'key_merchant' => array( - 'columns' => array('merchantPHID', 'providerClassKey'), - 'unique' => true, - ), - ), - ) + parent::getConfiguration(); - } - - public function save() { - $this->providerClassKey = PhabricatorHash::digestForIndex( - $this->providerClass); - - return parent::save(); - } - - public function generatePHID() { - return PhabricatorPHID::generateNewPHID( - PhortunePaymentProviderPHIDType::TYPECONST); - } - - public function attachMerchant(PhortuneMerchant $merchant) { - $this->merchant = $merchant; - return $this; - } - - public function getMerchant() { - return $this->assertAttached($this->merchant); - } - - public function getMetadataValue($key, $default = null) { - return idx($this->metadata, $key, $default); - } - - public function setMetadataValue($key, $value) { - $this->metadata[$key] = $value; - return $this; - } - - public function buildProvider() { - return newv($this->getProviderClass(), array()) - ->setProviderConfig($this); - } - - public function getObjectName() { - return pht('Provider %d', $this->getID()); - } - - public function getURI() { - return urisprintf( - '/phortune/merchant/%d/providers/%d/', - $this->getMerchant()->getID(), - $this->getID()); - } - - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } - - public function getPolicy($capability) { - return $this->getMerchant()->getPolicy($capability); - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - return $this->getMerchant()->hasAutomaticCapability($capability, $viewer); - } - - public function describeAutomaticCapability($capability) { - return pht('Providers have the policies of their merchant.'); - } - - -/* -( PhabricatorApplicationTransactionInterface )------------------------- */ - - - public function getApplicationTransactionEditor() { - return new PhortunePaymentProviderConfigEditor(); - } - - public function getApplicationTransactionTemplate() { - return new PhortunePaymentProviderConfigTransaction(); - } - -} diff --git a/src/applications/phortune/storage/PhortunePaymentProviderConfigTransaction.php b/src/applications/phortune/storage/PhortunePaymentProviderConfigTransaction.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortunePaymentProviderConfigTransaction.php +++ /dev/null @@ -1,53 +0,0 @@ -getAuthorPHID(); - - $old = $this->getOldValue(); - $new = $this->getNewValue(); - - switch ($this->getTransactionType()) { - case self::TYPE_CREATE: - return pht( - '%s created this payment provider.', - $this->renderHandleLink($author_phid)); - case self::TYPE_ENABLE: - if ($new) { - return pht( - '%s enabled this payment provider.', - $this->renderHandleLink($author_phid)); - } else { - return pht( - '%s disabled this payment provider.', - $this->renderHandleLink($author_phid)); - } - case self::TYPE_PROPERTY: - // TODO: Allow providers to improve this. - - return pht( - '%s edited a property of this payment provider.', - $this->renderHandleLink($author_phid)); - break; - } - - return parent::getTitle(); - } - -} diff --git a/src/applications/phortune/storage/PhortuneProduct.php b/src/applications/phortune/storage/PhortuneProduct.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortuneProduct.php +++ /dev/null @@ -1,113 +0,0 @@ - true, - self::CONFIG_SERIALIZATION => array( - 'metadata' => self::SERIALIZATION_JSON, - ), - self::CONFIG_COLUMN_SCHEMA => array( - 'productClassKey' => 'bytes12', - 'productClass' => 'text128', - 'productRefKey' => 'bytes12', - 'productRef' => 'text128', - ), - self::CONFIG_KEY_SCHEMA => array( - 'key_product' => array( - 'columns' => array('productClassKey', 'productRefKey'), - 'unique' => true, - ), - ), - ) + parent::getConfiguration(); - } - - public function generatePHID() { - return PhabricatorPHID::generateNewPHID( - PhortuneProductPHIDType::TYPECONST); - } - - public static function initializeNewProduct() { - return id(new PhortuneProduct()); - } - - public function attachImplementation(PhortuneProductImplementation $impl) { - $this->implementation = $impl; - } - - public function getImplementation() { - return $this->assertAttached($this->implementation); - } - - public function save() { - $this->productClassKey = PhabricatorHash::digestForIndex( - $this->productClass); - - $this->productRefKey = PhabricatorHash::digestForIndex( - $this->productRef); - - return parent::save(); - } - - public function getPriceAsCurrency() { - return $this->getImplementation()->getPriceAsCurrency($this); - } - - public function getProductName() { - return $this->getImplementation()->getName($this); - } - - public function getPurchaseName(PhortunePurchase $purchase) { - return $this->getImplementation()->getPurchaseName($this, $purchase); - } - - public function didPurchaseProduct(PhortunePurchase $purchase) { - return $this->getImplementation()->didPurchaseProduct($this, $purchase); - } - - public function didRefundProduct( - PhortunePurchase $purchase, - PhortuneCurrency $amount) { - return $this->getImplementation()->didRefundProduct( - $this, - $purchase, - $amount); - } - - public function getPurchaseURI(PhortunePurchase $purchase) { - return $this->getImplementation()->getPurchaseURI( - $this, - $purchase); - } - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - ); - } - - public function getPolicy($capability) { - return PhabricatorPolicies::POLICY_USER; - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - return false; - } - -} diff --git a/src/applications/phortune/storage/PhortunePurchase.php b/src/applications/phortune/storage/PhortunePurchase.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortunePurchase.php +++ /dev/null @@ -1,137 +0,0 @@ -setAuthorPHID($actor->getPHID()) - ->setProductPHID($product->getPHID()) - ->attachProduct($product) - ->setQuantity(1) - ->setStatus(self::STATUS_PENDING) - ->setBasePriceAsCurrency($product->getPriceAsCurrency()); - } - - protected function getConfiguration() { - return array( - self::CONFIG_AUX_PHID => true, - self::CONFIG_SERIALIZATION => array( - 'metadata' => self::SERIALIZATION_JSON, - ), - self::CONFIG_APPLICATION_SERIALIZERS => array( - 'basePriceAsCurrency' => new PhortuneCurrencySerializer(), - ), - self::CONFIG_COLUMN_SCHEMA => array( - 'cartPHID' => 'phid?', - 'basePriceAsCurrency' => 'text64', - 'quantity' => 'uint32', - 'status' => 'text32', - ), - self::CONFIG_KEY_SCHEMA => array( - 'key_cart' => array( - 'columns' => array('cartPHID'), - ), - ), - ) + parent::getConfiguration(); - } - - public function generatePHID() { - return PhabricatorPHID::generateNewPHID( - PhortunePurchasePHIDType::TYPECONST); - } - - public function attachCart(PhortuneCart $cart) { - $this->cart = $cart; - return $this; - } - - public function getCart() { - return $this->assertAttached($this->cart); - } - - public function attachProduct(PhortuneProduct $product) { - $this->product = $product; - return $this; - } - - public function getProduct() { - return $this->assertAttached($this->product); - } - - public function getFullDisplayName() { - return $this->getProduct()->getPurchaseName($this); - } - - public function getURI() { - return $this->getProduct()->getPurchaseURI($this); - } - - public function getTotalPriceAsCurrency() { - $base = $this->getBasePriceAsCurrency(); - - $price = PhortuneCurrency::newEmptyCurrency(); - for ($ii = 0; $ii < $this->getQuantity(); $ii++) { - $price = $price->add($base); - } - - return $price; - } - - public function getMetadataValue($key, $default = null) { - return idx($this->metadata, $key, $default); - } - - public function setMetadataValue($key, $value) { - $this->metadata[$key] = $value; - return $this; - } - - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } - - public function getPolicy($capability) { - return $this->getCart()->getPolicy($capability); - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - return $this->getCart()->hasAutomaticCapability($capability, $viewer); - } - - public function describeAutomaticCapability($capability) { - return pht('Purchases have the policies of their cart.'); - } - -} diff --git a/src/applications/phortune/storage/PhortuneSchemaSpec.php b/src/applications/phortune/storage/PhortuneSchemaSpec.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortuneSchemaSpec.php +++ /dev/null @@ -1,9 +0,0 @@ -buildEdgeSchemata(new PhortuneAccount()); - } - -} diff --git a/src/applications/phortune/storage/PhortuneSubscription.php b/src/applications/phortune/storage/PhortuneSubscription.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortuneSubscription.php +++ /dev/null @@ -1,319 +0,0 @@ - true, - self::CONFIG_SERIALIZATION => array( - 'metadata' => self::SERIALIZATION_JSON, - ), - self::CONFIG_COLUMN_SCHEMA => array( - 'defaultPaymentMethodPHID' => 'phid?', - 'subscriptionClassKey' => 'bytes12', - 'subscriptionClass' => 'text128', - 'subscriptionRefKey' => 'bytes12', - 'subscriptionRef' => 'text128', - 'status' => 'text32', - ), - self::CONFIG_KEY_SCHEMA => array( - 'key_subscription' => array( - 'columns' => array('subscriptionClassKey', 'subscriptionRefKey'), - 'unique' => true, - ), - 'key_account' => array( - 'columns' => array('accountPHID'), - ), - 'key_merchant' => array( - 'columns' => array('merchantPHID'), - ), - ), - ) + parent::getConfiguration(); - } - - public function getPHIDType() { - return PhortuneSubscriptionPHIDType::TYPECONST; - } - - public static function initializeNewSubscription( - PhortuneAccount $account, - PhortuneMerchant $merchant, - PhabricatorUser $author, - PhortuneSubscriptionImplementation $implementation, - PhabricatorTriggerClock $clock) { - - $trigger = id(new PhabricatorWorkerTrigger()) - ->setClock($clock); - - return id(new PhortuneSubscription()) - ->setStatus(self::STATUS_ACTIVE) - ->setAccountPHID($account->getPHID()) - ->attachAccount($account) - ->setMerchantPHID($merchant->getPHID()) - ->attachMerchant($merchant) - ->setAuthorPHID($author->getPHID()) - ->setSubscriptionClass(get_class($implementation)) - ->setSubscriptionRef($implementation->getRef()) - ->attachImplementation($implementation) - ->attachTrigger($trigger); - } - - public function attachImplementation( - PhortuneSubscriptionImplementation $impl) { - $this->implementation = $impl; - return $this; - } - - public function getImplementation() { - return $this->assertAttached($this->implementation); - } - - public function attachAccount(PhortuneAccount $account) { - $this->account = $account; - return $this; - } - - public function getAccount() { - return $this->assertAttached($this->account); - } - - public function attachMerchant(PhortuneMerchant $merchant) { - $this->merchant = $merchant; - return $this; - } - - public function getMerchant() { - return $this->assertAttached($this->merchant); - } - - public function attachTrigger(PhabricatorWorkerTrigger $trigger) { - $this->trigger = $trigger; - return $this; - } - - public function getTrigger() { - return $this->assertAttached($this->trigger); - } - - public function save() { - $this->subscriptionClassKey = PhabricatorHash::digestForIndex( - $this->subscriptionClass); - - $this->subscriptionRefKey = PhabricatorHash::digestForIndex( - $this->subscriptionRef); - - $is_new = (!$this->getID()); - - $this->openTransaction(); - - // If we're saving this subscription for the first time, we're also - // going to set up the trigger for it. - if ($is_new) { - $trigger_phid = PhabricatorPHID::generateNewPHID( - PhabricatorWorkerTriggerPHIDType::TYPECONST); - $this->setTriggerPHID($trigger_phid); - } - - $result = parent::save(); - - if ($is_new) { - $trigger_action = new PhabricatorScheduleTaskTriggerAction( - array( - 'class' => 'PhortuneSubscriptionWorker', - 'data' => array( - 'subscriptionPHID' => $this->getPHID(), - ), - 'options' => array( - 'objectPHID' => $this->getPHID(), - 'priority' => PhabricatorWorker::PRIORITY_BULK, - ), - )); - - $trigger = $this->getTrigger(); - $trigger->setPHID($trigger_phid); - $trigger->setAction($trigger_action); - $trigger->save(); - } - $this->saveTransaction(); - - $account = $this->getAccount(); - $merchant = $this->getMerchant(); - $account->writeMerchantEdge($merchant); - - return $result; - } - - public function getSubscriptionName() { - return $this->getImplementation()->getName($this); - } - - public function getSubscriptionFullName() { - return $this->getImplementation()->getFullName($this); - } - - public function getSubscriptionCrumbName() { - return $this->getImplementation()->getCrumbName($this); - } - - public function getCartName(PhortuneCart $cart) { - return $this->getImplementation()->getCartName($this, $cart); - } - - public function getURI() { - return urisprintf( - '/phortune/account/%d/subscriptions/%d/', - $this->getAccount()->getID(), - $this->getID()); - } - - public function getEditURI() { - $account_id = $this->getAccount()->getID(); - $id = $this->getID(); - - return "/phortune/{$account_id}/subscription/edit/{$id}/"; - } - - public function getMerchantURI() { - $merchant_id = $this->getMerchant()->getID(); - $id = $this->getID(); - return "/phortune/merchant/{$merchant_id}/subscription/view/{$id}/"; - } - - public function getCostForBillingPeriodAsCurrency($start_epoch, $end_epoch) { - return $this->getImplementation()->getCostForBillingPeriodAsCurrency( - $this, - $start_epoch, - $end_epoch); - } - - public function shouldInvoiceForBillingPeriod($start_epoch, $end_epoch) { - return $this->getImplementation()->shouldInvoiceForBillingPeriod( - $this, - $start_epoch, - $end_epoch); - } - - public function getPurchaseName( - PhortuneProduct $product, - PhortunePurchase $purchase) { - return $this->getImplementation()->getPurchaseName( - $this, - $product, - $purchase); - } - - public function getPurchaseURI( - PhortuneProduct $product, - PhortunePurchase $purchase) { - return $this->getImplementation()->getPurchaseURI( - $this, - $product, - $purchase); - } - - public function didPurchaseProduct( - PhortuneProduct $product, - PhortunePurchase $purchase) { - return $this->getImplementation()->didPurchaseProduct( - $this, - $product, - $purchase); - } - -/* -( PhabricatorApplicationTransactionInterface )------------------------- */ - - - public function getApplicationTransactionEditor() { - return new PhortuneSubscriptionEditor(); - } - - public function getApplicationTransactionTemplate() { - return new PhortuneSubscriptionTransaction(); - } - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - ); - } - - public function getPolicy($capability) { - return PhabricatorPolicies::getMostOpenPolicy(); - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - // See T13366. If you can edit the merchant associated with this - // subscription, you can view the subscription. - if ($capability === PhabricatorPolicyCapability::CAN_VIEW) { - $any_edit = PhortuneMerchantQuery::canViewersEditMerchants( - array($viewer->getPHID()), - array($this->getMerchantPHID())); - if ($any_edit) { - return true; - } - } - - return false; - } - - -/* -( PhabricatorExtendedPolicyInterface )--------------------------------- */ - - - public function getExtendedPolicy($capability, PhabricatorUser $viewer) { - if ($this->hasAutomaticCapability($capability, $viewer)) { - return array(); - } - - // See T13366. For blanket view and edit permissions on all subscriptions, - // you must be able to edit the associated account. - return array( - array( - $this->getAccount(), - PhabricatorPolicyCapability::CAN_EDIT, - ), - ); - } - - -/* -( PhabricatorPolicyCodexInterface )------------------------------------ */ - - - public function newPolicyCodex() { - return new PhortuneSubscriptionPolicyCodex(); - } - -} diff --git a/src/applications/phortune/storage/PhortuneSubscriptionTransaction.php b/src/applications/phortune/storage/PhortuneSubscriptionTransaction.php deleted file mode 100644 --- a/src/applications/phortune/storage/PhortuneSubscriptionTransaction.php +++ /dev/null @@ -1,18 +0,0 @@ -getName($subscription); - } - - public function getCrumbName(PhortuneSubscription $subscription) { - return $this->getName($subscription); - } - - abstract public function getCostForBillingPeriodAsCurrency( - PhortuneSubscription $subscription, - $start_epoch, - $end_epoch); - - public function shouldInvoiceForBillingPeriod( - PhortuneSubscription $subscription, - $start_epoch, - $end_epoch) { - return true; - } - - public function getCartName( - PhortuneSubscription $subscription, - PhortuneCart $cart) { - return pht('Subscription'); - } - - public function getPurchaseName( - PhortuneSubscription $subscription, - PhortuneProduct $product, - PhortunePurchase $purchase) { - return $product->getProductName(); - } - - public function getPurchaseURI( - PhortuneSubscription $subscription, - PhortuneProduct $product, - PhortunePurchase $purchase) { - return null; - } - - public function didPurchaseProduct( - PhortuneSubscription $subscription, - PhortuneProduct $product, - PhortunePurchase $purchase) { - return null; - } - -} diff --git a/src/applications/phortune/view/PhortuneChargeTableView.php b/src/applications/phortune/view/PhortuneChargeTableView.php deleted file mode 100644 --- a/src/applications/phortune/view/PhortuneChargeTableView.php +++ /dev/null @@ -1,89 +0,0 @@ -showOrder = $show_order; - return $this; - } - - public function getShowOrder() { - return $this->showOrder; - } - - public function setCharges(array $charges) { - $this->charges = $charges; - return $this; - } - - public function getCharges() { - return $this->charges; - } - - public function render() { - $charges = $this->getCharges(); - $viewer = $this->getViewer(); - - $phids = array(); - foreach ($charges as $charge) { - $phids[] = $charge->getCartPHID(); - $phids[] = $charge->getProviderPHID(); - $phids[] = $charge->getPaymentMethodPHID(); - $phids[] = $charge->getMerchantPHID(); - } - - $handles = $viewer->loadHandles($phids); - - $rows = array(); - foreach ($charges as $charge) { - $rows[] = array( - $charge->getID(), - $handles[$charge->getCartPHID()]->renderLink(), - $handles[$charge->getProviderPHID()]->renderLink(), - $charge->getPaymentMethodPHID() - ? $handles[$charge->getPaymentMethodPHID()]->renderLink() - : null, - $handles[$charge->getMerchantPHID()]->renderLink(), - $charge->getAmountAsCurrency()->formatForDisplay(), - $charge->getStatusForDisplay(), - phabricator_datetime($charge->getDateCreated(), $viewer), - ); - } - - $table = id(new AphrontTableView($rows)) - ->setNoDataString(pht('No charges found.')) - ->setHeaders( - array( - pht('ID'), - pht('Cart'), - pht('Provider'), - pht('Method'), - pht('Merchant'), - pht('Amount'), - pht('Status'), - pht('Created'), - )) - ->setColumnClasses( - array( - '', - '', - '', - '', - '', - 'wide right', - '', - '', - )) - ->setColumnVisibility( - array( - true, - $this->getShowOrder(), - )); - - return $table; - } - -} diff --git a/src/applications/phortune/view/PhortuneCreditCardForm.php b/src/applications/phortune/view/PhortuneCreditCardForm.php deleted file mode 100644 --- a/src/applications/phortune/view/PhortuneCreditCardForm.php +++ /dev/null @@ -1,122 +0,0 @@ -securityAssurance = $security_assurance; - return $this; - } - - public function getSecurityAssurance() { - return $this->securityAssurance; - } - - public function setUser(PhabricatorUser $user) { - $this->user = $user; - return $this; - } - - public function setErrors(array $errors) { - $this->errors = $errors; - return $this; - } - - public function addScript($script_uri) { - $this->scripts[] = $script_uri; - return $this; - } - - public function getFormID() { - if (!$this->formID) { - $this->formID = celerity_generate_unique_node_id(); - } - return $this->formID; - } - - public function buildForm() { - $form_id = $this->getFormID(); - - require_celerity_resource('phortune-credit-card-form-css'); - require_celerity_resource('phortune-credit-card-form'); - - require_celerity_resource('aphront-tooltip-css'); - Javelin::initBehavior('phabricator-tooltips'); - - $form = new AphrontFormView(); - - foreach ($this->scripts as $script) { - $form->appendChild( - phutil_tag( - 'script', - array( - 'type' => 'text/javascript', - 'src' => $script, - ))); - } - - $errors = $this->errors; - $e_number = isset($errors[PhortuneErrCode::ERR_CC_INVALID_NUMBER]) - ? pht('Invalid') - : null; - - $e_cvc = isset($errors[PhortuneErrCode::ERR_CC_INVALID_CVC]) - ? pht('Invalid') - : null; - - $e_expiry = isset($errors[PhortuneErrCode::ERR_CC_INVALID_EXPIRY]) - ? pht('Invalid') - : null; - - $form - ->setID($form_id) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Card Number')) - ->setDisableAutocomplete(true) - ->setSigil('number-input') - ->setError($e_number)) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('CVC')) - ->setDisableAutocomplete(true) - ->addClass('aphront-form-cvc-input') - ->setSigil('cvc-input') - ->setError($e_cvc)) - ->appendChild( - id(new PhortuneMonthYearExpiryControl()) - ->setLabel(pht('Expiration')) - ->setUser($this->user) - ->setError($e_expiry)); - - $assurance = $this->getSecurityAssurance(); - if ($assurance) { - $assurance = phutil_tag( - 'div', - array( - 'class' => 'phortune-security-assurance', - ), - array( - id(new PHUIIconView()) - ->setIcon('fa-lock grey'), - ' ', - $assurance, - )); - - $form->appendChild( - id(new AphrontFormMarkupControl()) - ->setValue($assurance)); - } - - return $form; - } -} diff --git a/src/applications/phortune/view/PhortuneOrderDescriptionView.php b/src/applications/phortune/view/PhortuneOrderDescriptionView.php deleted file mode 100644 --- a/src/applications/phortune/view/PhortuneOrderDescriptionView.php +++ /dev/null @@ -1,39 +0,0 @@ -order = $order; - return $this; - } - - public function getOrder() { - return $this->order; - } - - public function render() { - $viewer = $this->getViewer(); - $order = $this->getOrder(); - - $description = $order->getDescription(); - if (!strlen($description)) { - return null; - } - - $output = new PHUIRemarkupView($viewer, $description); - - $description_box = id(new PHUIBoxView()) - ->addMargin(PHUI::MARGIN_LARGE) - ->appendChild($output); - - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Description')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->appendChild($description_box); - } - - -} diff --git a/src/applications/phortune/view/PhortuneOrderItemsView.php b/src/applications/phortune/view/PhortuneOrderItemsView.php deleted file mode 100644 --- a/src/applications/phortune/view/PhortuneOrderItemsView.php +++ /dev/null @@ -1,58 +0,0 @@ -getViewer(); - $order = $this->getOrder(); - - $purchases = id(new PhortunePurchaseQuery()) - ->setViewer($viewer) - ->withCartPHIDs(array($order->getPHID())) - ->execute(); - - $order->attachPurchases($purchases); - - $rows = array(); - foreach ($purchases as $purchase) { - $rows[] = array( - $purchase->getFullDisplayName(), - $purchase->getBasePriceAsCurrency()->formatForDisplay(), - $purchase->getQuantity(), - $purchase->getTotalPriceAsCurrency()->formatForDisplay(), - ); - } - - $rows[] = array( - phutil_tag('strong', array(), pht('Total')), - '', - '', - phutil_tag('strong', array(), - $order->getTotalPriceAsCurrency()->formatForDisplay()), - ); - - $table = new AphrontTableView($rows); - $table->setHeaders( - array( - pht('Item'), - pht('Price'), - pht('Qty.'), - pht('Total'), - )); - $table->setColumnClasses( - array( - 'wide', - 'right', - 'right', - 'right', - )); - - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Items')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($table); - } - - -} diff --git a/src/applications/phortune/view/PhortuneOrderSummaryView.php b/src/applications/phortune/view/PhortuneOrderSummaryView.php deleted file mode 100644 --- a/src/applications/phortune/view/PhortuneOrderSummaryView.php +++ /dev/null @@ -1,370 +0,0 @@ -resumeURI = $resume_uri; - return $this; - } - - public function getResumeURI() { - return $this->resumeURI; - } - - public function setPrintable($printable) { - $this->printable = $printable; - return $this; - } - - public function getPrintable() { - return $this->printable; - } - - public function render() { - $is_printable = $this->getPrintable(); - - $content = array(); - - if ($is_printable) { - $content[] = $this->newContactHeader(); - } - - $content[] = $this->newMessagesView(); - $content[] = $this->newDetailsView(); - $content[] = $this->newDescriptionView(); - $content[] = $this->newItemsView(); - $content[] = $this->newChargesView(); - - if ($is_printable) { - $content[] = $this->newContactFooter(); - } - - return $content; - } - - private function newMessagesView() { - $viewer = $this->getViewer(); - $order = $this->getOrder(); - - $messages = array(); - $severity = null; - - $resume_uri = $this->getResumeURI(); - - $can_edit = PhabricatorPolicyFilter::hasCapability( - $viewer, - $order, - PhabricatorPolicyCapability::CAN_EDIT); - - $can_merchant = PhabricatorPolicyFilter::hasCapability( - $viewer, - $order->getMerchant(), - PhabricatorPolicyCapability::CAN_EDIT); - - switch ($order->getStatus()) { - case PhortuneCart::STATUS_READY: - if ($order->getIsInvoice()) { - $severity = PHUIInfoView::SEVERITY_NOTICE; - $messages[] = pht('This invoice is ready for payment.'); - } - break; - case PhortuneCart::STATUS_PURCHASING: - if ($can_edit) { - if ($resume_uri) { - $messages[] = pht( - 'The checkout process has been started, but not yet completed. '. - 'You can continue checking out by clicking %s, or cancel the '. - 'order, or contact the merchant for assistance.', - phutil_tag('strong', array(), pht('Continue Checkout'))); - } else { - $messages[] = pht( - 'The checkout process has been started, but an error occurred. '. - 'You can cancel the order or contact the merchant for '. - 'assistance.'); - } - } - break; - case PhortuneCart::STATUS_CHARGED: - if ($can_edit) { - $messages[] = pht( - 'You have been charged, but processing could not be completed. '. - 'You can cancel your order, or contact the merchant for '. - 'assistance.'); - } - break; - case PhortuneCart::STATUS_HOLD: - if ($can_edit) { - $messages[] = pht( - 'Payment for this order is on hold. You can click %s to check '. - 'for updates, cancel the order, or contact the merchant for '. - 'assistance.', - phutil_tag('strong', array(), pht('Update Status'))); - } - break; - case PhortuneCart::STATUS_REVIEW: - if ($can_merchant) { - $messages[] = pht( - 'This order has been flagged for manual review. Review the order '. - 'and choose %s to accept it or %s to reject it.', - phutil_tag('strong', array(), pht('Accept Order')), - phutil_tag('strong', array(), pht('Refund Order'))); - } else if ($can_edit) { - $messages[] = pht( - 'This order requires manual processing and will complete once '. - 'the merchant accepts it.'); - } - break; - case PhortuneCart::STATUS_PURCHASED: - $severity = PHUIInfoView::SEVERITY_SUCCESS; - $messages[] = pht('This purchase has been completed.'); - break; - } - - if (!$messages) { - return null; - } - - if ($severity === null) { - $severity = PHUIInfoView::SEVERITY_WARNING; - } - - $messages_view = id(new PHUIInfoView()) - ->setSeverity($severity) - ->appendChild($messages); - - $is_printable = $this->getPrintable(); - if ($is_printable) { - $messages_view = phutil_tag( - 'div', - array( - 'class' => 'phortune-invoice-status', - ), - $messages_view); - } - - return $messages_view; - } - - private function newDetailsView() { - $viewer = $this->getViewer(); - $order = $this->getOrder(); - $is_printable = $this->getPrintable(); - - $view = id(new PHUIPropertyListView()) - ->setViewer($viewer) - ->setObject($order); - - $account_phid = $order->getAccountPHID(); - $author_phid = $order->getAuthorPHID(); - $merchant_phid = $order->getMerchantPHID(); - - $handles = $viewer->loadHandles( - array( - $account_phid, - $author_phid, - $merchant_phid, - )); - - if ($is_printable) { - $account_link = $handles[$account_phid]->getFullName(); - $author_link = $handles[$author_phid]->getFullName(); - $merchant_link = $handles[$merchant_phid]->getFullName(); - } else { - $account_link = $handles[$account_phid]->renderLink(); - $author_link = $handles[$author_phid]->renderLink(); - $merchant_link = $handles[$merchant_phid]->renderLink(); - } - - if ($is_printable) { - $view->addProperty(pht('Order Name'), $order->getName()); - } - - $view->addProperty(pht('Account'), $account_link); - $view->addProperty(pht('Authorized By'), $author_link); - $view->addProperty(pht('Merchant'), $merchant_link); - - $view->addProperty( - pht('Order Status'), - PhortuneCart::getNameForStatus($order->getStatus())); - $view->addProperty( - pht('Created'), - phabricator_datetime($order->getDateCreated(), $viewer)); - $view->addProperty( - pht('Updated'), - phabricator_datetime($order->getDateModified(), $viewer)); - - return id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Details')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->appendChild($view); - } - - private function newChargesView() { - $viewer = $this->getViewer(); - $order = $this->getOrder(); - - $charges = id(new PhortuneChargeQuery()) - ->setViewer($viewer) - ->withCartPHIDs(array($order->getPHID())) - ->needCarts(true) - ->execute(); - - $charges_table = id(new PhortuneChargeTableView()) - ->setUser($viewer) - ->setCharges($charges) - ->setShowOrder(false); - - $charges_view = id(new PHUIObjectBoxView()) - ->setHeaderText(pht('Charges')) - ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) - ->setTable($charges_table); - - return $charges_view; - } - - private function newDescriptionView() { - $viewer = $this->getViewer(); - $order = $this->getOrder(); - - return id(new PhortuneOrderDescriptionView()) - ->setViewer($viewer) - ->setOrder($order); - } - - private function newItemsView() { - $viewer = $this->getViewer(); - $order = $this->getOrder(); - - return id(new PhortuneOrderItemsView()) - ->setViewer($viewer) - ->setOrder($order); - } - - private function newContactHeader() { - $viewer = $this->getViewer(); - $order = $this->getOrder(); - - $merchant = id(new PhortuneMerchantQuery()) - ->setViewer($viewer) - ->withPHIDs(array($order->getMerchant()->getPHID())) - ->needProfileImage(true) - ->executeOne(); - - $merchant_name = $merchant->getName(); - $merchant_image = $merchant->getProfileImageURI(); - - $account = $order->getAccount(); - $account_name = $account->getBillingName(); - - $account_contact = $account->getBillingAddress(); - if (strlen($account_contact)) { - $account_contact = new PHUIRemarkupView( - $viewer, - $account_contact); - } - - $merchant_contact = $merchant->getContactInfo(); - if (strlen($merchant_contact)) { - $merchant_contact = new PHUIRemarkupView( - $viewer, - $merchant->getContactInfo()); - } - - $logo = phutil_tag( - 'div', - array( - 'class' => 'phortune-invoice-logo', - ), - phutil_tag( - 'img', - array( - 'height' => '50', - 'width' => '50', - 'alt' => $merchant_name, - 'src' => $merchant_image, - ))); - - $to_title = phutil_tag( - 'div', - array( - 'class' => 'phortune-mini-header', - ), - pht('Bill To:')); - - $bill_to = phutil_tag( - 'td', - array( - 'class' => 'phortune-invoice-to', - 'width' => '50%', - ), - array( - $to_title, - phutil_tag('strong', array(), $account_name), - phutil_tag('br', array()), - $account_contact, - )); - - $from_title = phutil_tag( - 'div', - array( - 'class' => 'phortune-mini-header', - ), - pht('From:')); - - $bill_from = phutil_tag( - 'td', - array( - 'class' => 'phortune-invoice-from', - 'width' => '50%', - ), - array( - $from_title, - phutil_tag('strong', array(), $merchant_name), - phutil_tag('br', array()), - $merchant_contact, - )); - - $contact = phutil_tag( - 'table', - array( - 'class' => 'phortune-invoice-contact', - 'width' => '100%', - ), - phutil_tag( - 'tr', - array(), - array( - $bill_to, - $bill_from, - ))); - - return array( - $logo, - $contact, - ); - } - - private function newContactFooter() { - $viewer = $this->getViewer(); - $order = $this->getOrder(); - - $merchant = $order->getMerchant(); - $footer = $merchant->getInvoiceFooter(); - - if (!strlen($footer)) { - return null; - } - - return phutil_tag( - 'div', - array( - 'class' => 'phortune-invoice-footer', - ), - $footer); - } - -} diff --git a/src/applications/phortune/view/PhortuneOrderTableView.php b/src/applications/phortune/view/PhortuneOrderTableView.php deleted file mode 100644 --- a/src/applications/phortune/view/PhortuneOrderTableView.php +++ /dev/null @@ -1,198 +0,0 @@ -carts = $carts; - return $this; - } - - public function getCarts() { - return $this->carts; - } - - public function setIsInvoices($is_invoices) { - $this->isInvoices = $is_invoices; - return $this; - } - - public function getIsInvoices() { - return $this->isInvoices; - } - - public function setNoDataString($no_data_string) { - $this->noDataString = $no_data_string; - return $this; - } - - public function getNoDataString() { - return $this->noDataString; - } - - public function setIsMerchantView($is_merchant_view) { - $this->isMerchantView = $is_merchant_view; - return $this; - } - - public function getIsMerchantView() { - return $this->isMerchantView; - } - - public function setAccountEmail(PhortuneAccountEmail $account_email) { - $this->accountEmail = $account_email; - return $this; - } - - public function getAccountEmail() { - return $this->accountEmail; - } - - public function render() { - $carts = $this->getCarts(); - $viewer = $this->getUser(); - - $is_invoices = $this->getIsInvoices(); - $is_merchant = $this->getIsMerchantView(); - $is_external = (bool)$this->getAccountEmail(); - - $email = $this->getAccountEmail(); - - $phids = array(); - foreach ($carts as $cart) { - $phids[] = $cart->getPHID(); - foreach ($cart->getPurchases() as $purchase) { - $phids[] = $purchase->getPHID(); - } - $phids[] = $cart->getMerchantPHID(); - } - - $handles = $viewer->loadHandles($phids); - - $rows = array(); - $rowc = array(); - foreach ($carts as $cart) { - if ($is_external) { - $cart_link = phutil_tag( - 'a', - array( - 'href' => $email->getExternalOrderURI($cart), - ), - $handles[$cart->getPHID()]->getName()); - } else { - $cart_link = $handles[$cart->getPHID()]->renderLink(); - } - $purchases = $cart->getPurchases(); - - if (count($purchases) == 1) { - $purchase = head($purchases); - $purchase_name = $handles[$purchase->getPHID()]->getName(); - $purchases = array(); - } else { - $purchase_name = ''; - } - - if ($is_invoices) { - if ($is_external) { - $merchant_link = $handles[$cart->getMerchantPHID()]->getName(); - } else { - $merchant_link = $handles[$cart->getMerchantPHID()]->renderLink(); - } - } else { - $merchant_link = null; - } - - $rowc[] = ''; - $rows[] = array( - $cart->getID(), - $merchant_link, - phutil_tag( - 'strong', - array(), - $cart_link), - $purchase_name, - phutil_tag( - 'strong', - array(), - $cart->getTotalPriceAsCurrency()->formatForDisplay()), - PhortuneCart::getNameForStatus($cart->getStatus()), - phabricator_datetime($cart->getDateModified(), $viewer), - phabricator_datetime($cart->getDateCreated(), $viewer), - id(new PHUIButtonView()) - ->setTag('a') - ->setColor('green') - ->setHref($cart->getCheckoutURI()) - ->setText(pht('Pay Now')) - ->setIcon('fa-credit-card'), - ); - foreach ($purchases as $purchase) { - $id = $purchase->getID(); - - $price = $purchase->getTotalPriceAsCurrency()->formatForDisplay(); - - $rowc[] = ''; - $rows[] = array( - '', - '', - $handles[$purchase->getPHID()]->renderLink(), - $price, - '', - '', - '', - '', - ); - } - } - - $table = id(new AphrontTableView($rows)) - ->setNoDataString($this->getNoDataString()) - ->setRowClasses($rowc) - ->setHeaders( - array( - pht('ID'), - pht('Merchant'), - $is_invoices ? pht('Invoice') : pht('Order'), - pht('Purchase'), - pht('Amount'), - pht('Status'), - pht('Updated'), - pht('Invoice Date'), - null, - )) - ->setColumnClasses( - array( - '', - '', - '', - 'wide', - 'right', - '', - 'right', - 'right', - 'action', - )) - ->setColumnVisibility( - array( - true, - $is_invoices, - true, - true, - true, - !$is_invoices, - !$is_invoices, - $is_invoices, - - // We show "Pay Now" for due invoices, but not if the viewer is the - // merchant, since it doesn't make sense for them to pay. - ($is_invoices && !$is_merchant && !$is_external), - )); - - return $table; - } - -} diff --git a/src/applications/phortune/view/PhortuneOrderView.php b/src/applications/phortune/view/PhortuneOrderView.php deleted file mode 100644 --- a/src/applications/phortune/view/PhortuneOrderView.php +++ /dev/null @@ -1,17 +0,0 @@ -order = $order; - return $this; - } - - final public function getOrder() { - return $this->order; - } - -} diff --git a/src/applications/phortune/view/PhortuneSubscriptionTableView.php b/src/applications/phortune/view/PhortuneSubscriptionTableView.php deleted file mode 100644 --- a/src/applications/phortune/view/PhortuneSubscriptionTableView.php +++ /dev/null @@ -1,83 +0,0 @@ -subscriptions = $subscriptions; - return $this; - } - - public function getSubscriptions() { - return $this->subscriptions; - } - - public function setIsMerchantView($is_merchant_view) { - $this->isMerchantView = $is_merchant_view; - return $this; - } - - public function getIsMerchantView() { - return $this->isMerchantView; - } - - public function setNotice($notice) { - $this->notice = $notice; - return $this; - } - - public function render() { - return $this->newTableView(); - } - - public function newTableView() { - $subscriptions = $this->getSubscriptions(); - $viewer = $this->getViewer(); - - $phids = mpull($subscriptions, 'getPHID'); - $handles = $viewer->loadHandles($phids); - - $rows = array(); - $rowc = array(); - foreach ($subscriptions as $subscription) { - if ($this->getIsMerchantView()) { - $uri = $subscription->getMerchantURI(); - } else { - $uri = $subscription->getURI(); - } - - $subscription_link = $handles[$subscription->getPHID()]->renderLink(); - $rows[] = array( - $subscription->getID(), - phutil_tag( - 'a', - array( - 'href' => $uri, - ), - $subscription->getSubscriptionFullName()), - phabricator_datetime($subscription->getDateCreated(), $viewer), - ); - } - - $table = id(new AphrontTableView($rows)) - ->setNotice($this->notice) - ->setHeaders( - array( - pht('ID'), - pht('Name'), - pht('Created'), - )) - ->setColumnClasses( - array( - '', - 'wide', - 'right', - )); - - return $table; - } - -} diff --git a/src/applications/phortune/worker/PhortuneSubscriptionWorker.php b/src/applications/phortune/worker/PhortuneSubscriptionWorker.php deleted file mode 100644 --- a/src/applications/phortune/worker/PhortuneSubscriptionWorker.php +++ /dev/null @@ -1,264 +0,0 @@ -loadSubscription(); - - $range = $this->getBillingPeriodRange($subscription); - list($last_epoch, $next_epoch) = $range; - - $should_invoice = $subscription->shouldInvoiceForBillingPeriod( - $last_epoch, - $next_epoch); - if (!$should_invoice) { - return; - } - - $currency = $subscription->getCostForBillingPeriodAsCurrency( - $last_epoch, - $next_epoch); - if (!$currency->isPositive()) { - return; - } - - - $account = $subscription->getAccount(); - $merchant = $subscription->getMerchant(); - - $viewer = PhabricatorUser::getOmnipotentUser(); - - $product = id(new PhortuneProductQuery()) - ->setViewer($viewer) - ->withClassAndRef('PhortuneSubscriptionProduct', $subscription->getPHID()) - ->executeOne(); - - $cart_implementation = id(new PhortuneSubscriptionCart()) - ->setSubscription($subscription); - - // TODO: This isn't really ideal. It would be better to use an application - // actor than a fairly arbitrary account member. - - // However, for now, some of the stuff later in the pipeline requires a - // valid actor with a real PHID. The subscription should eventually be - // able to create these invoices "as" the application it is acting on - // behalf of. - - $members = id(new PhabricatorPeopleQuery()) - ->setViewer($viewer) - ->withPHIDs($account->getMemberPHIDs()) - ->execute(); - $actor = null; - - $any_disabled = false; - foreach ($members as $member) { - - // Don't act as a disabled user. If all of the users on the account are - // disabled this means we won't charge the subscription, but that's - // probably correct since it means no one can cancel or pay it anyway. - if ($member->getIsDisabled()) { - $any_disabled = true; - continue; - } - - // For now, just pick the first valid user we encounter as the actor. - $actor = $member; - break; - } - - if (!$actor) { - if ($any_disabled) { - $message = pht( - 'All members of the account ("%s") for this subscription ("%s") '. - 'are disabled.', - $account->getPHID(), - $subscription->getPHID()); - } else if ($account->getMemberPHIDs()) { - $message = pht( - 'Unable to load any of the members of the account ("%s") for this '. - 'subscription ("%s").', - $account->getPHID(), - $subscription->getPHID()); - } else { - $message = pht( - 'The account ("%s") for this subscription ("%s") has no '. - 'members.', - $account->getPHID(), - $subscription->getPHID()); - } - throw new PhabricatorWorkerPermanentFailureException($message); - } - - $cart = $account->newCart($actor, $cart_implementation, $merchant); - - $purchase = $cart->newPurchase($actor, $product); - - $purchase - ->setBasePriceAsCurrency($currency) - ->setMetadataValue('subscriptionPHID', $subscription->getPHID()) - ->setMetadataValue('epoch.start', $last_epoch) - ->setMetadataValue('epoch.end', $next_epoch) - ->save(); - - $cart - ->setSubscriptionPHID($subscription->getPHID()) - ->setIsInvoice(1) - ->save(); - - $cart->activateCart(); - - try { - $issues = $this->chargeSubscription($actor, $subscription, $cart); - } catch (Exception $ex) { - $issues = array( - pht( - 'There was a technical error while trying to automatically bill '. - 'this subscription: %s', - $ex), - ); - } - - if (!$issues) { - // We're all done; charging the cart sends a billing email as a side - // effect. - return; - } - - // We're shoving this through the CartEditor because it has all the logic - // for sending mail about carts. This doesn't really affect the state of - // the cart, but reduces the amount of code duplication. - - $xactions = array(); - $xactions[] = id(new PhortuneCartTransaction()) - ->setTransactionType(PhortuneCartTransaction::TYPE_INVOICED) - ->setNewValue(true); - - $content_source = PhabricatorContentSource::newForSource( - PhabricatorPhortuneContentSource::SOURCECONST); - - $acting_phid = id(new PhabricatorPhortuneApplication())->getPHID(); - $editor = id(new PhortuneCartEditor()) - ->setActor($viewer) - ->setActingAsPHID($acting_phid) - ->setContentSource($content_source) - ->setContinueOnMissingFields(true) - ->setInvoiceIssues($issues) - ->applyTransactions($cart, $xactions); - } - - - private function chargeSubscription( - PhabricatorUser $viewer, - PhortuneSubscription $subscription, - PhortuneCart $cart) { - - $issues = array(); - if (!$subscription->getDefaultPaymentMethodPHID()) { - $issues[] = pht( - 'There is no payment method associated with this subscription, so '. - 'it could not be billed automatically. Add a default payment method '. - 'to enable automatic billing.'); - return $issues; - } - - $method = id(new PhortunePaymentMethodQuery()) - ->setViewer($viewer) - ->withPHIDs(array($subscription->getDefaultPaymentMethodPHID())) - ->withStatuses( - array( - PhortunePaymentMethod::STATUS_ACTIVE, - )) - ->executeOne(); - if (!$method) { - $issues[] = pht( - 'The payment method associated with this subscription is invalid '. - 'or out of date, so it could not be automatically billed. Update '. - 'the default payment method to enable automatic billing.'); - return $issues; - } - - $provider = $method->buildPaymentProvider(); - $charge = $cart->willApplyCharge($viewer, $provider, $method); - - try { - $provider->applyCharge($method, $charge); - } catch (Exception $ex) { - $cart->didFailCharge($charge); - $issues[] = pht( - 'Automatic billing failed: %s', - $ex->getMessage()); - return $issues; - } - - $cart->didApplyCharge($charge); - } - - - /** - * Load the subscription to generate an invoice for. - * - * @return PhortuneSubscription The subscription to invoice. - */ - private function loadSubscription() { - $viewer = PhabricatorUser::getOmnipotentUser(); - - $data = $this->getTaskData(); - $subscription_phid = idx($data, 'subscriptionPHID'); - - $subscription = id(new PhortuneSubscriptionQuery()) - ->setViewer($viewer) - ->withPHIDs(array($subscription_phid)) - ->executeOne(); - if (!$subscription) { - throw new PhabricatorWorkerPermanentFailureException( - pht( - 'Failed to load subscription with PHID "%s".', - $subscription_phid)); - } - - return $subscription; - } - - - /** - * Get the start and end epoch timestamps for this billing period. - * - * @param PhortuneSubscription The subscription being billed. - * @return pair Beginning and end of the billing range. - */ - private function getBillingPeriodRange(PhortuneSubscription $subscription) { - $data = $this->getTaskData(); - - $last_epoch = idx($data, 'trigger.last-epoch'); - if (!$last_epoch) { - // If this is the first time the subscription is firing, use the - // creation date as the start of the billing period. - $last_epoch = $subscription->getDateCreated(); - } - $this_epoch = idx($data, 'trigger.this-epoch'); - - if (!$last_epoch || !$this_epoch) { - throw new PhabricatorWorkerPermanentFailureException( - pht('Subscription is missing billing period information.')); - } - - $period_length = ($this_epoch - $last_epoch); - if ($period_length <= 0) { - throw new PhabricatorWorkerPermanentFailureException( - pht( - 'Subscription has invalid billing period.')); - } - - if (empty($data['manual'])) { - if (PhabricatorTime::getNow() < $this_epoch) { - throw new Exception( - pht( - 'Refusing to generate a subscription invoice for a billing period '. - 'which ends in the future.')); - } - } - - return array($last_epoch, $this_epoch); - } - -} diff --git a/src/applications/phortune/xaction/PhortuneAccountBillingAddressTransaction.php b/src/applications/phortune/xaction/PhortuneAccountBillingAddressTransaction.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneAccountBillingAddressTransaction.php +++ /dev/null @@ -1,39 +0,0 @@ -getBillingAddress(); - } - - public function applyInternalEffects($object, $value) { - $object->setBillingAddress($value); - } - - public function getTitle() { - return pht( - '%s updated the account billing address.', - $this->renderAuthor()); - } - - public function hasChangeDetailView() { - return true; - } - - public function getMailDiffSectionHeader() { - return pht('CHANGES TO BILLING ADDRESS'); - } - - public function newChangeDetailView() { - $viewer = $this->getViewer(); - - return id(new PhabricatorApplicationTransactionTextDiffDetailView()) - ->setViewer($viewer) - ->setOldText($this->getOldValue()) - ->setNewText($this->getNewValue()); - } - -} diff --git a/src/applications/phortune/xaction/PhortuneAccountBillingNameTransaction.php b/src/applications/phortune/xaction/PhortuneAccountBillingNameTransaction.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneAccountBillingNameTransaction.php +++ /dev/null @@ -1,56 +0,0 @@ -getBillingName(); - } - - public function applyInternalEffects($object, $value) { - $object->setBillingName($value); - } - - public function getTitle() { - $old = $this->getOldValue(); - $new = $this->getNewValue(); - - if (strlen($old) && strlen($new)) { - return pht( - '%s changed the billing name for this account from %s to %s.', - $this->renderAuthor(), - $this->renderOldValue(), - $this->renderNewValue()); - } else if (strlen($old)) { - return pht( - '%s removed the billing name for this account (was %s).', - $this->renderAuthor(), - $this->renderOldValue()); - } else { - return pht( - '%s set the billing name for this account to %s.', - $this->renderAuthor(), - $this->renderNewValue()); - } - } - - public function validateTransactions($object, array $xactions) { - $errors = array(); - - $max_length = $object->getColumnMaximumByteLength('billingName'); - foreach ($xactions as $xaction) { - $new_value = $xaction->getNewValue(); - $new_length = strlen($new_value); - if ($new_length > $max_length) { - $errors[] = $this->newRequiredError( - pht('The billing name can be no longer than %s characters.', - new PhutilNumber($max_length))); - } - } - - return $errors; - } - -} diff --git a/src/applications/phortune/xaction/PhortuneAccountEmailAddressTransaction.php b/src/applications/phortune/xaction/PhortuneAccountEmailAddressTransaction.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneAccountEmailAddressTransaction.php +++ /dev/null @@ -1,63 +0,0 @@ -getAddress(); - } - - public function applyInternalEffects($object, $value) { - $object->setAddress($value); - } - - public function validateTransactions($object, array $xactions) { - $errors = array(); - - if ($this->isEmptyTextTransaction($object->getAddress(), $xactions)) { - $errors[] = $this->newRequiredError( - pht('You must provide an email address.')); - } - - $max_length = $object->getColumnMaximumByteLength('address'); - foreach ($xactions as $xaction) { - $old_value = $xaction->getOldValue(); - $new_value = $xaction->getNewValue(); - - $new_length = strlen($new_value); - if ($new_length > $max_length) { - $errors[] = $this->newInvalidError( - pht( - 'The address can be no longer than %s characters.', - new PhutilNumber($max_length)), - $xaction); - continue; - } - - if (!PhabricatorUserEmail::isValidAddress($new_value)) { - $errors[] = $this->newInvalidError( - PhabricatorUserEmail::describeValidAddresses(), - $xaction); - continue; - } - - if ($new_value !== $old_value) { - if (!$this->isNewObject()) { - $errors[] = $this->newInvalidError( - pht( - 'Account email addresses can not be edited once they are '. - 'created. To change the billing address for an account, '. - 'disable the old address and then add a new address.'), - $xaction); - continue; - } - } - - } - - return $errors; - } - -} diff --git a/src/applications/phortune/xaction/PhortuneAccountEmailRotateTransaction.php b/src/applications/phortune/xaction/PhortuneAccountEmailRotateTransaction.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneAccountEmailRotateTransaction.php +++ /dev/null @@ -1,23 +0,0 @@ -setAccessKey($access_key); - } - - public function getTitle() { - return pht( - '%s rotated the access key for this email address.', - $this->renderAuthor()); - } - -} diff --git a/src/applications/phortune/xaction/PhortuneAccountEmailStatusTransaction.php b/src/applications/phortune/xaction/PhortuneAccountEmailStatusTransaction.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneAccountEmailStatusTransaction.php +++ /dev/null @@ -1,23 +0,0 @@ -getStatus(); - } - - public function applyInternalEffects($object, $value) { - $object->setStatus($value); - } - - public function getTitle() { - return pht( - '%s changed the status for this address to %s.', - $this->renderAuthor(), - $this->renderNewValue()); - } - -} diff --git a/src/applications/phortune/xaction/PhortuneAccountEmailTransactionType.php b/src/applications/phortune/xaction/PhortuneAccountEmailTransactionType.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneAccountEmailTransactionType.php +++ /dev/null @@ -1,4 +0,0 @@ -getName(); - } - - public function applyInternalEffects($object, $value) { - $object->setName($value); - } - - public function getTitle() { - $old = $this->getOldValue(); - $new = $this->getNewValue(); - - if (phutil_nonempty_string($old) && phutil_nonempty_string($new)) { - return pht( - '%s renamed this account from %s to %s.', - $this->renderAuthor(), - $this->renderOldValue(), - $this->renderNewValue()); - } else { - return pht( - '%s created this account.', - $this->renderAuthor()); - } - } - - public function validateTransactions($object, array $xactions) { - $errors = array(); - - if ($this->isEmptyTextTransaction($object->getName(), $xactions)) { - $errors[] = $this->newRequiredError( - pht('Accounts must have a name.')); - } - - $max_length = $object->getColumnMaximumByteLength('name'); - foreach ($xactions as $xaction) { - $new_value = $xaction->getNewValue(); - $new_length = strlen($new_value); - if ($new_length > $max_length) { - $errors[] = $this->newRequiredError( - pht('The name can be no longer than %s characters.', - new PhutilNumber($max_length))); - } - } - - return $errors; - } - -} diff --git a/src/applications/phortune/xaction/PhortuneAccountTransactionType.php b/src/applications/phortune/xaction/PhortuneAccountTransactionType.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneAccountTransactionType.php +++ /dev/null @@ -1,4 +0,0 @@ -getContactInfo(); - } - - public function applyInternalEffects($object, $value) { - $object->setContactInfo($value); - } - - public function getTitle() { - return pht( - '%s updated the merchant contact info.', - $this->renderAuthor()); - } - - public function getTitleForFeed() { - return pht( - '%s updated the merchant contact info for %s.', - $this->renderAuthor(), - $this->renderObject()); - } - - public function hasChangeDetailView() { - return true; - } - - public function getMailDiffSectionHeader() { - return pht('CHANGES TO MERCHANT CONTACT INFO'); - } - - public function newChangeDetailView() { - $viewer = $this->getViewer(); - - return id(new PhabricatorApplicationTransactionTextDiffDetailView()) - ->setViewer($viewer) - ->setOldText($this->getOldValue()) - ->setNewText($this->getNewValue()); - } - - public function newRemarkupChanges() { - $changes = array(); - - $changes[] = $this->newRemarkupChange() - ->setOldValue($this->getOldValue()) - ->setNewValue($this->getNewValue()); - - return $changes; - } - -} diff --git a/src/applications/phortune/xaction/PhortuneMerchantDescriptionTransaction.php b/src/applications/phortune/xaction/PhortuneMerchantDescriptionTransaction.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneMerchantDescriptionTransaction.php +++ /dev/null @@ -1,56 +0,0 @@ -getDescription(); - } - - public function applyInternalEffects($object, $value) { - $object->setDescription($value); - } - - public function getTitle() { - return pht( - '%s updated the merchant description.', - $this->renderAuthor()); - } - - public function getTitleForFeed() { - return pht( - '%s updated the merchant description for %s.', - $this->renderAuthor(), - $this->renderObject()); - } - - public function hasChangeDetailView() { - return true; - } - - public function getMailDiffSectionHeader() { - return pht('CHANGES TO MERCHANT DESCRIPTION'); - } - - public function newChangeDetailView() { - $viewer = $this->getViewer(); - - return id(new PhabricatorApplicationTransactionTextDiffDetailView()) - ->setViewer($viewer) - ->setOldText($this->getOldValue()) - ->setNewText($this->getNewValue()); - } - - public function newRemarkupChanges() { - $changes = array(); - - $changes[] = $this->newRemarkupChange() - ->setOldValue($this->getOldValue()) - ->setNewValue($this->getNewValue()); - - return $changes; - } - -} diff --git a/src/applications/phortune/xaction/PhortuneMerchantInvoiceEmailTransaction.php b/src/applications/phortune/xaction/PhortuneMerchantInvoiceEmailTransaction.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneMerchantInvoiceEmailTransaction.php +++ /dev/null @@ -1,94 +0,0 @@ -getInvoiceEmail(); - } - - public function applyInternalEffects($object, $value) { - $object->setInvoiceEmail($value); - } - - public function getTitle() { - $old = $this->getOldValue(); - $new = $this->getNewValue(); - - if (strlen($old) && strlen($new)) { - return pht( - '%s updated the invoice email from %s to %s.', - $this->renderAuthor(), - $this->renderOldValue(), - $this->renderNewValue()); - } else if (strlen($old)) { - return pht( - '%s removed the invoice email.', - $this->renderAuthor()); - } else { - return pht( - '%s set the invoice email to %s.', - $this->renderAuthor(), - $this->renderNewValue()); - } - } - - public function getTitleForFeed() { - $old = $this->getOldValue(); - $new = $this->getNewValue(); - - if (strlen($old) && strlen($new)) { - return pht( - '%s updated %s invoice email from %s to %s.', - $this->renderAuthor(), - $this->renderObject(), - $this->renderOldValue(), - $this->renderNewValue()); - } else if (strlen($old)) { - return pht( - '%s removed the invoice email for %s.', - $this->renderAuthor(), - $this->renderObject()); - } else { - return pht( - '%s set the invoice email for %s to %s.', - $this->renderAuthor(), - $this->renderObject(), - $this->renderNewValue()); - } - } - - public function getIcon() { - return 'fa-envelope'; - } - - public function validateTransactions($object, array $xactions) { - $errors = array(); - - $max_length = $object->getColumnMaximumByteLength('invoiceEmail'); - foreach ($xactions as $xaction) { - if (strlen($xaction->getNewValue())) { - $email = new PhutilEmailAddress($xaction->getNewValue()); - $domain = $email->getDomainName(); - if (!strlen($domain)) { - $errors[] = $this->newInvalidError( - pht('Invoice email "%s" must be a valid email.', - $xaction->getNewValue())); - } - - $new_value = $xaction->getNewValue(); - $new_length = strlen($new_value); - if ($new_length > $max_length) { - $errors[] = $this->newInvalidError( - pht('The email can be no longer than %s characters.', - new PhutilNumber($max_length))); - } - } - } - - return $errors; - } - -} diff --git a/src/applications/phortune/xaction/PhortuneMerchantInvoiceFooterTransaction.php b/src/applications/phortune/xaction/PhortuneMerchantInvoiceFooterTransaction.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneMerchantInvoiceFooterTransaction.php +++ /dev/null @@ -1,56 +0,0 @@ -getInvoiceFooter(); - } - - public function applyInternalEffects($object, $value) { - $object->setInvoiceFooter($value); - } - - public function getTitle() { - return pht( - '%s updated the merchant invoice footer.', - $this->renderAuthor()); - } - - public function getTitleForFeed() { - return pht( - '%s updated the merchant invoice footer for %s.', - $this->renderAuthor(), - $this->renderObject()); - } - - public function hasChangeDetailView() { - return true; - } - - public function getMailDiffSectionHeader() { - return pht('CHANGES TO MERCHANT INVOICE FOOTER'); - } - - public function newChangeDetailView() { - $viewer = $this->getViewer(); - - return id(new PhabricatorApplicationTransactionTextDiffDetailView()) - ->setViewer($viewer) - ->setOldText($this->getOldValue()) - ->setNewText($this->getNewValue()); - } - - public function newRemarkupChanges() { - $changes = array(); - - $changes[] = $this->newRemarkupChange() - ->setOldValue($this->getOldValue()) - ->setNewValue($this->getNewValue()); - - return $changes; - } - -} diff --git a/src/applications/phortune/xaction/PhortuneMerchantNameTransaction.php b/src/applications/phortune/xaction/PhortuneMerchantNameTransaction.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneMerchantNameTransaction.php +++ /dev/null @@ -1,55 +0,0 @@ -getName(); - } - - public function applyInternalEffects($object, $value) { - $object->setName($value); - } - - public function getTitle() { - return pht( - '%s renamed this merchant from %s to %s.', - $this->renderAuthor(), - $this->renderOldValue(), - $this->renderNewValue()); - } - - public function getTitleForFeed() { - return pht( - '%s renamed %s merchant name from %s to %s.', - $this->renderAuthor(), - $this->renderObject(), - $this->renderOldValue(), - $this->renderNewValue()); - } - - public function validateTransactions($object, array $xactions) { - $errors = array(); - - if ($this->isEmptyTextTransaction($object->getName(), $xactions)) { - $errors[] = $this->newRequiredError( - pht('Merchants must have a name.')); - } - - $max_length = $object->getColumnMaximumByteLength('name'); - foreach ($xactions as $xaction) { - $new_value = $xaction->getNewValue(); - $new_length = strlen($new_value); - if ($new_length > $max_length) { - $errors[] = $this->newInvalidError( - pht('The name can be no longer than %s characters.', - new PhutilNumber($max_length))); - } - } - - return $errors; - } - -} diff --git a/src/applications/phortune/xaction/PhortuneMerchantPictureTransaction.php b/src/applications/phortune/xaction/PhortuneMerchantPictureTransaction.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneMerchantPictureTransaction.php +++ /dev/null @@ -1,33 +0,0 @@ -getProfileImagePHID(); - } - - public function applyInternalEffects($object, $value) { - $object->setProfileImagePHID($value); - } - - public function getTitle() { - return pht( - '%s updated the picture.', - $this->renderAuthor()); - } - - public function getTitleForFeed() { - return pht( - '%s updated the picture for merchant %s.', - $this->renderAuthor(), - $this->renderObject()); - } - - public function getIcon() { - return 'fa-camera-retro'; - } - -} diff --git a/src/applications/phortune/xaction/PhortuneMerchantTransactionType.php b/src/applications/phortune/xaction/PhortuneMerchantTransactionType.php deleted file mode 100644 --- a/src/applications/phortune/xaction/PhortuneMerchantTransactionType.php +++ /dev/null @@ -1,4 +0,0 @@ -getName(); - } - - public function applyInternalEffects($object, $value) { - $object->setName($value); - } - - public function getTitle() { - $old_value = $this->getOldValue(); - $new_value = $this->getNewValue(); - - if (strlen($old_value) && strlen($new_value)) { - return pht( - '%s renamed this payment method from %s to %s.', - $this->renderAuthor(), - $this->renderOldValue(), - $this->renderNewValue()); - } else if (strlen($new_value)) { - return pht( - '%s set the name of this payment method to %s.', - $this->renderAuthor(), - $this->renderNewValue()); - } else { - return pht( - '%s removed the name of this payment method (was: %s).', - $this->renderAuthor(), - $this->renderOldValue()); - } - } - -} diff --git a/src/applications/phortune/xaction/paymentmethod/PhortunePaymentMethodStatusTransaction.php b/src/applications/phortune/xaction/paymentmethod/PhortunePaymentMethodStatusTransaction.php deleted file mode 100644 --- a/src/applications/phortune/xaction/paymentmethod/PhortunePaymentMethodStatusTransaction.php +++ /dev/null @@ -1,22 +0,0 @@ -getStatus(); - } - - public function applyInternalEffects($object, $value) { - $object->setStatus($value); - } - - public function getTitle() { - return pht( - '%s changed the status of this payment method.', - $this->renderAuthor()); - } - -} diff --git a/src/applications/phortune/xaction/paymentmethod/PhortunePaymentMethodTransactionType.php b/src/applications/phortune/xaction/paymentmethod/PhortunePaymentMethodTransactionType.php deleted file mode 100644 --- a/src/applications/phortune/xaction/paymentmethod/PhortunePaymentMethodTransactionType.php +++ /dev/null @@ -1,4 +0,0 @@ -getDefaultPaymentMethodPHID(); - } - - public function applyInternalEffects($object, $value) { - $object->setDefaultPaymentMethodPHID($value); - } - - public function getTitle() { - $old_phid = $this->getOldValue(); - $new_phid = $this->getNewValue(); - - if ($old_phid && $new_phid) { - return pht( - '%s changed the automatic payment method for this subscription.', - $this->renderAuthor()); - } else if ($new_phid) { - return pht( - '%s configured an automatic payment method for this subscription.', - $this->renderAuthor()); - } else { - return pht( - '%s stopped automatic payments for this subscription.', - $this->renderAuthor()); - } - } - - public function shouldTryMFA( - $object, - PhabricatorApplicationTransaction $xaction) { - return true; - } - -} diff --git a/src/applications/phortune/xaction/subscription/PhortuneSubscriptionTransactionType.php b/src/applications/phortune/xaction/subscription/PhortuneSubscriptionTransactionType.php deleted file mode 100644 --- a/src/applications/phortune/xaction/subscription/PhortuneSubscriptionTransactionType.php +++ /dev/null @@ -1,4 +0,0 @@ -setIcon('fa-heart') - ->setHeader(pht('Funder')) + ->setHeader(pht('Supporter')) ->setQuality(PhabricatorBadgesQuality::UNCOMMON); $badges3[] = id(new PHUIBadgeMiniView()) diff --git a/src/applications/uiexample/examples/PhabricatorMultiColumnUIExample.php b/src/applications/uiexample/examples/PhabricatorMultiColumnUIExample.php --- a/src/applications/uiexample/examples/PhabricatorMultiColumnUIExample.php +++ b/src/applications/uiexample/examples/PhabricatorMultiColumnUIExample.php @@ -100,69 +100,6 @@ ->setFluidLayout(true) ->setBorder(true); - $shipping = id(new PHUIFormLayoutView()) - ->setUser($user) - ->setFullWidth(true) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Name')) - ->setDisableAutocomplete(true) - ->setSigil('name-input')) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Address')) - ->setDisableAutocomplete(true) - ->setSigil('address-input')) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('City/State')) - ->setDisableAutocomplete(true) - ->setSigil('city-input')) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Country')) - ->setDisableAutocomplete(true) - ->setSigil('country-input')) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Postal Code')) - ->setDisableAutocomplete(true) - ->setSigil('postal-input')); - - $cc = id(new PHUIFormLayoutView()) - ->setUser($user) - ->setFullWidth(true) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Card Number')) - ->setDisableAutocomplete(true) - ->setSigil('number-input') - ->setError('')) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('CVC')) - ->setDisableAutocomplete(true) - ->setSigil('cvc-input') - ->setError('')) - ->appendChild( - id(new PhortuneMonthYearExpiryControl()) - ->setLabel(pht('Expiration')) - ->setUser($user) - ->setError('')); - - $shipping_title = pht('Shipping Address'); - $billing_title = pht('Billing Address'); - $cc_title = pht('Payment Information'); - - $head6 = id(new PHUIHeaderView()) - ->setHeader(pht("Let's Go Shopping")); - $layout6 = id(new AphrontMultiColumnView()) - ->addColumn(hsprintf('

%s

%s', $shipping_title, $shipping)) - ->addColumn(hsprintf('

%s

%s', $billing_title, $shipping)) - ->addColumn(hsprintf('

%s

%s', $cc_title, $cc)) - ->setFluidLayout(true) - ->setBorder(true); - $wrap1 = phutil_tag( 'div', array( @@ -198,13 +135,6 @@ ), $layout5); - $wrap6 = phutil_tag( - 'div', - array( - 'class' => 'ml', - ), - $layout6); - return phutil_tag( 'div', array(), @@ -219,8 +149,6 @@ $wrap4, $head5, $wrap5, - $head6, - $wrap6, )); } } diff --git a/src/docs/book/phorge.book b/src/docs/book/phorge.book --- a/src/docs/book/phorge.book +++ b/src/docs/book/phorge.book @@ -140,10 +140,6 @@ "name": "Flags", "include": "(^src/applications/flag/)" }, - "fund": { - "name": "Fund", - "include": "(^src/applications/fund/)" - }, "harbormaster": { "name": "Harbormaster", "include": "(^src/applications/harbormaster/)" @@ -232,10 +228,6 @@ "name": "Pholio", "include": "(^src/applications/pholio/)" }, - "phortune": { - "name": "Phortune", - "include": "(^src/applications/phortune/)" - }, "phpast": { "name": "PHPAST", "include": "(^src/applications/phpast/)" diff --git a/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php b/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php --- a/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php +++ b/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php @@ -93,7 +93,6 @@ 'db.config' => array(), 'db.token' => array(), 'db.phlux' => array(), - 'db.phortune' => array(), 'db.phrequent' => array(), 'db.diviner' => array(), 'db.auth' => array(), @@ -104,7 +103,6 @@ 'db.passphrase' => array(), 'db.dashboard' => array(), 'db.system' => array(), - 'db.fund' => array(), 'db.almanac' => array(), 'db.multimeter' => array(), 'db.spaces' => array(), @@ -618,16 +616,12 @@ '20130317.phrictionedge.sql' => array(), '20130321.token.sql' => array(), '20130310.xactionmeta.sql' => array(), - '20130322.phortune.sql' => array(), - '20130323.phortunepayment.sql' => array(), - '20130324.phortuneproduct.sql' => array(), '20130330.phrequent.sql' => array(), '20130403.conpherencecache.sql' => array(), '20130403.conpherencecachemig.php' => array(), '20130409.commitdrev.php' => array(), '20130417.externalaccount.sql' => array(), '20130423.updateexternalaccount.sql' => array(), - '20130423.phortunepaymentrevised.sql' => array(), '20130423.conpherenceindices.sql' => array(), '20130426.search_savedquery.sql' => array(), '20130502.countdownrevamp1.sql' => array(), diff --git a/src/view/page/PhabricatorStandardPageView.php b/src/view/page/PhabricatorStandardPageView.php --- a/src/view/page/PhabricatorStandardPageView.php +++ b/src/view/page/PhabricatorStandardPageView.php @@ -857,8 +857,8 @@ $blacklist[] = $application->getQuicksandURIPatternBlacklist(); } - // See T4340. Currently, Phortune and Auth both require pulling in external - // Javascript (for Stripe card management and Recaptcha, respectively). + // See T4340. Currently, Auth requires pulling in external + // Javascript (for Recaptcha). // This can put us in a position where the user loads a page with a // restrictive Content-Security-Policy, then uses Quicksand to navigate to // a page which needs to load external scripts. For now, just blacklist @@ -866,7 +866,6 @@ // significant by doing so. $blacklist[] = array( - '/phortune/.*', '/auth/.*', ); diff --git a/webroot/rsrc/css/application/phortune/phortune-credit-card-form.css b/webroot/rsrc/css/application/phortune/phortune-credit-card-form.css deleted file mode 100644 --- a/webroot/rsrc/css/application/phortune/phortune-credit-card-form.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @provides phortune-credit-card-form-css - */ - -.phortune-security-assurance { - color: {$lightgreytext}; -} diff --git a/webroot/rsrc/css/application/phortune/phortune-invoice.css b/webroot/rsrc/css/application/phortune/phortune-invoice.css deleted file mode 100644 --- a/webroot/rsrc/css/application/phortune/phortune-invoice.css +++ /dev/null @@ -1,75 +0,0 @@ -/** - * @provides phortune-invoice-css - */ - -.phortune-invoice-view { - max-width: 800px; - margin: 16px auto; - background: #fff; -} - -.phortune-invoice-view .phabricator-main-menu { - display: none; -} - -.phortune-invoice-view .phabricator-standard-page-footer { - display: none; -} - -.device-desktop .phortune-invoice-view .phui-property-list-key { - width: 16%; -} - -.device-desktop .phortune-invoice-view .phui-property-list-value { - width: 80%; -} - -.phortune-invoice-logo { - margin-bottom: 24px; -} - -.phortune-invoice-logo img { - margin: 0 auto; -} - -.phortune-invoice-contact { - margin-bottom: 32px; -} - -.phortune-invoice-contact td { - padding: 4px 16px; -} - -.phortune-invoice-to { - border-right: 1px solid {$lightblueborder}; -} - -.phortune-mini-header { - color: {$lightbluetext}; - font-weight: bold; - text-transform: uppercase; - margin-bottom: 4px; - letter-spacing: 0.25em; -} - -.phortune-invoice-status { - margin-bottom: 24px; -} - -.phortune-invoice-status .phui-info-view { - margin: 0; -} - -.phortune-invoice-view .phui-box.phui-object-box { - margin-bottom: 24px; -} - -.phortune-invoice-footer { - color: {$lightgreytext}; - margin: 48px 0 64px; - text-align: center; -} - -.phortune-invoice-footer strong { - color: #000; -} diff --git a/webroot/rsrc/css/application/phortune/phortune.css b/webroot/rsrc/css/application/phortune/phortune.css deleted file mode 100644 --- a/webroot/rsrc/css/application/phortune/phortune.css +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @provides phortune-css - */ - -.phortune-payment-icon { - width: 34px; - height: 34px; -} - -.phortune-payment-onetime-list { - width: 280px; -} - -.phortune-payment-onetime-list button { - margin: 0 0 8px 0; - width: 100%; -} - -.printable.phortune-cart-page .phui-two-column-view .phui-two-column-content - .phui-main-column { - width: auto; -} - -.printable.phortune-cart-page .phui-two-column-view .phui-two-column-content - .phui-side-column { - display: none; -} diff --git a/webroot/rsrc/js/application/phortune/behavior-stripe-payment-form.js b/webroot/rsrc/js/application/phortune/behavior-stripe-payment-form.js deleted file mode 100644 --- a/webroot/rsrc/js/application/phortune/behavior-stripe-payment-form.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @provides javelin-behavior-stripe-payment-form - * @requires javelin-behavior - * javelin-dom - * phortune-credit-card-form - */ - -JX.behavior('stripe-payment-form', function(config) { - - function onsubmit(card_data) { - var errors = []; - - Stripe.setPublishableKey(config.stripePublishableKey); - - if (!Stripe.validateCardNumber(card_data.number)) { - errors.push('cc:invalid:number'); - } - - if (!Stripe.validateCVC(card_data.cvc)) { - errors.push('cc:invalid:cvc'); - } - - if (!Stripe.validateExpiry(card_data.month, card_data.year)) { - errors.push('cc:invalid:expiry'); - } - - if (errors.length) { - ccform.submitForm(errors); - return; - } - - var data = { - number: card_data.number, - cvc: card_data.cvc, - exp_month: card_data.month, - exp_year: card_data.year - }; - - Stripe.createToken(data, onresponse); - } - - function onresponse(status, response) { - var errors = []; - var token = null; - if (status != 200) { - errors.push('cc:stripe:http:' + status); - } else if (response.error) { - errors.push('cc:stripe:error:' + response.error.type); - } else { - token = response.id; - } - - ccform.submitForm(errors, {stripeCardToken: token}); - } - - var ccform = new JX.PhortuneCreditCardForm(JX.$(config.formID), onsubmit); -}); diff --git a/webroot/rsrc/js/application/phortune/behavior-test-payment-form.js b/webroot/rsrc/js/application/phortune/behavior-test-payment-form.js deleted file mode 100644 --- a/webroot/rsrc/js/application/phortune/behavior-test-payment-form.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @provides javelin-behavior-test-payment-form - * @requires javelin-behavior - * javelin-dom - * phortune-credit-card-form - */ - -JX.behavior('test-payment-form', function(config) { - function onsubmit() { - onresponse(); - } - - function onresponse() { - ccform.submitForm([], {test: true}); - } - - var ccform = new JX.PhortuneCreditCardForm(JX.$(config.formID), onsubmit); -}); diff --git a/webroot/rsrc/js/application/phortune/phortune-credit-card-form.js b/webroot/rsrc/js/application/phortune/phortune-credit-card-form.js deleted file mode 100644 --- a/webroot/rsrc/js/application/phortune/phortune-credit-card-form.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @provides phortune-credit-card-form - * @requires javelin-install - * javelin-dom - * javelin-json - * javelin-workflow - * javelin-util - * @javelin - */ - -/** - * Simple wrapper for credit card forms generated by `PhortuneCreditCardForm`. - * - * To construct an object for a form: - * - * new JX.PhortuneCreditCardForm(form_root_node, submit_callback); - * - */ -JX.install('PhortuneCreditCardForm', { - construct : function(root, onsubmit) { - this._root = root; - this._submitCallback = onsubmit; - JX.DOM.listen(root, 'submit', null, JX.bind(this, this._onsubmit)); - }, - - members : { - _root : null, - _submitCallback : null, - - _getCardData : function() { - var root = this._root; - - return { - number : JX.DOM.find(root, 'input', 'number-input').value, - cvc : JX.DOM.find(root, 'input', 'cvc-input' ).value, - month : JX.DOM.find(root, 'select', 'month-input' ).value, - year : JX.DOM.find(root, 'select', 'year-input' ).value - }; - }, - - submitForm : function(errors, token) { - var params = { - errors: JX.JSON.stringify(errors), - token: JX.JSON.stringify(token || {}) - }; - - JX.Workflow - .newFromForm(this._root, params) - .start(); - }, - - _onsubmit : function(e) { - e.kill(); - this._submitCallback(this._getCardData()); - } - - } - -});