刘远航 4 سال پیش
والد
کامیت
94eefae904
100فایلهای تغییر یافته به همراه18060 افزوده شده و 0 حذف شده
  1. 21 0
      vendor/adbario/php-dot-notation/LICENSE.md
  2. 29 0
      vendor/adbario/php-dot-notation/composer.json
  3. 601 0
      vendor/adbario/php-dot-notation/src/Dot.php
  4. 23 0
      vendor/adbario/php-dot-notation/src/helpers.php
  5. 300 0
      vendor/alibabacloud/client/CHANGELOG.md
  6. 30 0
      vendor/alibabacloud/client/CONTRIBUTING.md
  7. 13 0
      vendor/alibabacloud/client/LICENSE.md
  8. 88 0
      vendor/alibabacloud/client/NOTICE.md
  9. 166 0
      vendor/alibabacloud/client/README-zh-CN.md
  10. 167 0
      vendor/alibabacloud/client/README.md
  11. 6 0
      vendor/alibabacloud/client/UPGRADING.md
  12. 116 0
      vendor/alibabacloud/client/composer.json
  13. 53 0
      vendor/alibabacloud/client/src/Accept.php
  14. 62 0
      vendor/alibabacloud/client/src/AlibabaCloud.php
  15. 30 0
      vendor/alibabacloud/client/src/Clients/AccessKeyClient.php
  16. 29 0
      vendor/alibabacloud/client/src/Clients/BearerTokenClient.php
  17. 72 0
      vendor/alibabacloud/client/src/Clients/Client.php
  18. 26 0
      vendor/alibabacloud/client/src/Clients/EcsRamRoleClient.php
  19. 98 0
      vendor/alibabacloud/client/src/Clients/ManageTrait.php
  20. 33 0
      vendor/alibabacloud/client/src/Clients/RamRoleArnClient.php
  21. 30 0
      vendor/alibabacloud/client/src/Clients/RsaKeyPairClient.php
  22. 28 0
      vendor/alibabacloud/client/src/Clients/StsClient.php
  23. 62 0
      vendor/alibabacloud/client/src/Config/Config.php
  24. 3800 0
      vendor/alibabacloud/client/src/Config/Data.php
  25. 65 0
      vendor/alibabacloud/client/src/Credentials/AccessKeyCredential.php
  26. 66 0
      vendor/alibabacloud/client/src/Credentials/BearerTokenCredential.php
  27. 18 0
      vendor/alibabacloud/client/src/Credentials/CredentialsInterface.php
  28. 50 0
      vendor/alibabacloud/client/src/Credentials/EcsRamRoleCredential.php
  29. 181 0
      vendor/alibabacloud/client/src/Credentials/Ini/CreateTrait.php
  30. 209 0
      vendor/alibabacloud/client/src/Credentials/Ini/IniCredential.php
  31. 111 0
      vendor/alibabacloud/client/src/Credentials/Ini/OptionsTrait.php
  32. 170 0
      vendor/alibabacloud/client/src/Credentials/Providers/CredentialsProvider.php
  33. 128 0
      vendor/alibabacloud/client/src/Credentials/Providers/EcsRamRoleProvider.php
  34. 88 0
      vendor/alibabacloud/client/src/Credentials/Providers/Provider.php
  35. 84 0
      vendor/alibabacloud/client/src/Credentials/Providers/RamRoleArnProvider.php
  36. 86 0
      vendor/alibabacloud/client/src/Credentials/Providers/RsaKeyPairProvider.php
  37. 110 0
      vendor/alibabacloud/client/src/Credentials/RamRoleArnCredential.php
  38. 47 0
      vendor/alibabacloud/client/src/Credentials/Requests/AssumeRole.php
  39. 37 0
      vendor/alibabacloud/client/src/Credentials/Requests/GenerateSessionAccessKey.php
  40. 75 0
      vendor/alibabacloud/client/src/Credentials/RsaKeyPairCredential.php
  41. 80 0
      vendor/alibabacloud/client/src/Credentials/StsCredential.php
  42. 55 0
      vendor/alibabacloud/client/src/DefaultAcsClient.php
  43. 68 0
      vendor/alibabacloud/client/src/Encode.php
  44. 70 0
      vendor/alibabacloud/client/src/Exception/AlibabaCloudException.php
  45. 38 0
      vendor/alibabacloud/client/src/Exception/ClientException.php
  46. 158 0
      vendor/alibabacloud/client/src/Exception/ServerException.php
  47. 259 0
      vendor/alibabacloud/client/src/Filter/ApiFilter.php
  48. 146 0
      vendor/alibabacloud/client/src/Filter/ClientFilter.php
  49. 152 0
      vendor/alibabacloud/client/src/Filter/CredentialFilter.php
  50. 67 0
      vendor/alibabacloud/client/src/Filter/Filter.php
  51. 166 0
      vendor/alibabacloud/client/src/Filter/HttpFilter.php
  52. 289 0
      vendor/alibabacloud/client/src/Functions.php
  53. 79 0
      vendor/alibabacloud/client/src/Log/LogFormatter.php
  54. 74 0
      vendor/alibabacloud/client/src/Profile/DefaultProfile.php
  55. 18 0
      vendor/alibabacloud/client/src/Regions/EndpointProvider.php
  56. 160 0
      vendor/alibabacloud/client/src/Regions/LocationService.php
  57. 46 0
      vendor/alibabacloud/client/src/Regions/LocationServiceRequest.php
  58. 112 0
      vendor/alibabacloud/client/src/Release.php
  59. 445 0
      vendor/alibabacloud/client/src/Request/Request.php
  60. 335 0
      vendor/alibabacloud/client/src/Request/RoaRequest.php
  61. 203 0
      vendor/alibabacloud/client/src/Request/RpcRequest.php
  62. 259 0
      vendor/alibabacloud/client/src/Request/Traits/AcsTrait.php
  63. 98 0
      vendor/alibabacloud/client/src/Request/Traits/ClientTrait.php
  64. 55 0
      vendor/alibabacloud/client/src/Request/Traits/DeprecatedRoaTrait.php
  65. 246 0
      vendor/alibabacloud/client/src/Request/Traits/DeprecatedTrait.php
  66. 149 0
      vendor/alibabacloud/client/src/Request/Traits/RetryTrait.php
  67. 142 0
      vendor/alibabacloud/client/src/Request/UserAgent.php
  68. 50 0
      vendor/alibabacloud/client/src/Resolver/ActionResolverTrait.php
  69. 113 0
      vendor/alibabacloud/client/src/Resolver/ApiResolver.php
  70. 67 0
      vendor/alibabacloud/client/src/Resolver/CallTrait.php
  71. 43 0
      vendor/alibabacloud/client/src/Resolver/Roa.php
  72. 41 0
      vendor/alibabacloud/client/src/Resolver/Rpc.php
  73. 74 0
      vendor/alibabacloud/client/src/Resolver/VersionResolver.php
  74. 151 0
      vendor/alibabacloud/client/src/Result/Result.php
  75. 57 0
      vendor/alibabacloud/client/src/SDK.php
  76. 47 0
      vendor/alibabacloud/client/src/Signature/BearerTokenSignature.php
  77. 47 0
      vendor/alibabacloud/client/src/Signature/ShaHmac1Signature.php
  78. 47 0
      vendor/alibabacloud/client/src/Signature/ShaHmac256Signature.php
  79. 67 0
      vendor/alibabacloud/client/src/Signature/ShaHmac256WithRsaSignature.php
  80. 49 0
      vendor/alibabacloud/client/src/Signature/Signature.php
  81. 35 0
      vendor/alibabacloud/client/src/Signature/SignatureInterface.php
  82. 41 0
      vendor/alibabacloud/client/src/Support/Arrays.php
  83. 28 0
      vendor/alibabacloud/client/src/Support/Path.php
  84. 143 0
      vendor/alibabacloud/client/src/Support/Sign.php
  85. 57 0
      vendor/alibabacloud/client/src/Traits/ArrayAccessTrait.php
  86. 273 0
      vendor/alibabacloud/client/src/Traits/ClientTrait.php
  87. 66 0
      vendor/alibabacloud/client/src/Traits/DefaultRegionTrait.php
  88. 134 0
      vendor/alibabacloud/client/src/Traits/EndpointTrait.php
  89. 317 0
      vendor/alibabacloud/client/src/Traits/HasDataTrait.php
  90. 68 0
      vendor/alibabacloud/client/src/Traits/HistoryTrait.php
  91. 141 0
      vendor/alibabacloud/client/src/Traits/HttpTrait.php
  92. 97 0
      vendor/alibabacloud/client/src/Traits/LogTrait.php
  93. 97 0
      vendor/alibabacloud/client/src/Traits/MockTrait.php
  94. 54 0
      vendor/alibabacloud/client/src/Traits/ObjectAccessTrait.php
  95. 33 0
      vendor/alibabacloud/client/src/Traits/RegionTrait.php
  96. 90 0
      vendor/alibabacloud/client/src/Traits/RequestTrait.php
  97. 4024 0
      vendor/alibabacloud/sdk/CHANGELOG.md
  98. 31 0
      vendor/alibabacloud/sdk/CONTRIBUTING.md
  99. 13 0
      vendor/alibabacloud/sdk/LICENSE.md
  100. 88 0
      vendor/alibabacloud/sdk/NOTICE.md

+ 21 - 0
vendor/adbario/php-dot-notation/LICENSE.md

xqd
@@ -0,0 +1,21 @@
+# The MIT License (MIT)
+
+Copyright (c) 2016-2019 Riku Särkinen
+
+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.

+ 29 - 0
vendor/adbario/php-dot-notation/composer.json

xqd
@@ -0,0 +1,29 @@
+{
+    "name": "adbario/php-dot-notation",
+    "description": "PHP dot notation access to arrays",
+    "keywords": ["dotnotation", "arrayaccess"],
+    "homepage": "https://github.com/adbario/php-dot-notation",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Riku Särkinen",
+            "email": "riku@adbar.io"
+        }
+    ],
+    "require": {
+        "php": ">=5.5",
+        "ext-json": "*"
+    },
+    "require-dev": {
+        "phpunit/phpunit": "^4.0|^5.0|^6.0",
+        "squizlabs/php_codesniffer": "^3.0"
+    },
+    "autoload": {
+        "files": [
+            "src/helpers.php"
+        ],
+        "psr-4": {
+            "Adbar\\": "src"
+        }
+    }
+}

+ 601 - 0
vendor/adbario/php-dot-notation/src/Dot.php

xqd
@@ -0,0 +1,601 @@
+<?php
+/**
+ * Dot - PHP dot notation access to arrays
+ *
+ * @author  Riku Särkinen <riku@adbar.io>
+ * @link    https://github.com/adbario/php-dot-notation
+ * @license https://github.com/adbario/php-dot-notation/blob/2.x/LICENSE.md (MIT License)
+ */
+namespace Adbar;
+
+use Countable;
+use ArrayAccess;
+use ArrayIterator;
+use JsonSerializable;
+use IteratorAggregate;
+
+/**
+ * Dot
+ *
+ * This class provides a dot notation access and helper functions for
+ * working with arrays of data. Inspired by Laravel Collection.
+ */
+class Dot implements ArrayAccess, Countable, IteratorAggregate, JsonSerializable
+{
+    /**
+     * The stored items
+     *
+     * @var array
+     */
+    protected $items = [];
+
+    /**
+     * Create a new Dot instance
+     *
+     * @param mixed $items
+     */
+    public function __construct($items = [])
+    {
+        $this->items = $this->getArrayItems($items);
+    }
+
+    /**
+     * Set a given key / value pair or pairs
+     * if the key doesn't exist already
+     *
+     * @param array|int|string $keys
+     * @param mixed            $value
+     */
+    public function add($keys, $value = null)
+    {
+        if (is_array($keys)) {
+            foreach ($keys as $key => $value) {
+                $this->add($key, $value);
+            }
+        } elseif (is_null($this->get($keys))) {
+            $this->set($keys, $value);
+        }
+    }
+
+    /**
+     * Return all the stored items
+     *
+     * @return array
+     */
+    public function all()
+    {
+        return $this->items;
+    }
+
+    /**
+     * Delete the contents of a given key or keys
+     *
+     * @param array|int|string|null $keys
+     */
+    public function clear($keys = null)
+    {
+        if (is_null($keys)) {
+            $this->items = [];
+
+            return;
+        }
+
+        $keys = (array) $keys;
+
+        foreach ($keys as $key) {
+            $this->set($key, []);
+        }
+    }
+
+    /**
+     * Delete the given key or keys
+     *
+     * @param array|int|string $keys
+     */
+    public function delete($keys)
+    {
+        $keys = (array) $keys;
+
+        foreach ($keys as $key) {
+            if ($this->exists($this->items, $key)) {
+                unset($this->items[$key]);
+
+                continue;
+            }
+
+            $items = &$this->items;
+            $segments = explode('.', $key);
+            $lastSegment = array_pop($segments);
+
+            foreach ($segments as $segment) {
+                if (!isset($items[$segment]) || !is_array($items[$segment])) {
+                    continue 2;
+                }
+
+                $items = &$items[$segment];
+            }
+
+            unset($items[$lastSegment]);
+        }
+    }
+
+    /**
+     * Checks if the given key exists in the provided array.
+     *
+     * @param  array      $array Array to validate
+     * @param  int|string $key   The key to look for
+     *
+     * @return bool
+     */
+    protected function exists($array, $key)
+    {
+        return array_key_exists($key, $array);
+    }
+
+    /**
+     * Flatten an array with the given character as a key delimiter
+     *
+     * @param  string     $delimiter
+     * @param  array|null $items
+     * @param  string     $prepend
+     * @return array
+     */
+    public function flatten($delimiter = '.', $items = null, $prepend = '')
+    {
+        $flatten = [];
+
+        if (is_null($items)) {
+            $items = $this->items;
+        }
+
+        foreach ($items as $key => $value) {
+            if (is_array($value) && !empty($value)) {
+                $flatten = array_merge(
+                    $flatten,
+                    $this->flatten($delimiter, $value, $prepend.$key.$delimiter)
+                );
+            } else {
+                $flatten[$prepend.$key] = $value;
+            }
+        }
+
+        return $flatten;
+    }
+
+    /**
+     * Return the value of a given key
+     *
+     * @param  int|string|null $key
+     * @param  mixed           $default
+     * @return mixed
+     */
+    public function get($key = null, $default = null)
+    {
+        if (is_null($key)) {
+            return $this->items;
+        }
+
+        if ($this->exists($this->items, $key)) {
+            return $this->items[$key];
+        }
+
+        if (strpos($key, '.') === false) {
+            return $default;
+        }
+
+        $items = $this->items;
+
+        foreach (explode('.', $key) as $segment) {
+            if (!is_array($items) || !$this->exists($items, $segment)) {
+                return $default;
+            }
+
+            $items = &$items[$segment];
+        }
+
+        return $items;
+    }
+
+    /**
+     * Return the given items as an array
+     *
+     * @param  mixed $items
+     * @return array
+     */
+    protected function getArrayItems($items)
+    {
+        if (is_array($items)) {
+            return $items;
+        } elseif ($items instanceof self) {
+            return $items->all();
+        }
+
+        return (array) $items;
+    }
+
+    /**
+     * Check if a given key or keys exists
+     *
+     * @param  array|int|string $keys
+     * @return bool
+     */
+    public function has($keys)
+    {
+        $keys = (array) $keys;
+
+        if (!$this->items || $keys === []) {
+            return false;
+        }
+
+        foreach ($keys as $key) {
+            $items = $this->items;
+
+            if ($this->exists($items, $key)) {
+                continue;
+            }
+
+            foreach (explode('.', $key) as $segment) {
+                if (!is_array($items) || !$this->exists($items, $segment)) {
+                    return false;
+                }
+
+                $items = $items[$segment];
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Check if a given key or keys are empty
+     *
+     * @param  array|int|string|null $keys
+     * @return bool
+     */
+    public function isEmpty($keys = null)
+    {
+        if (is_null($keys)) {
+            return empty($this->items);
+        }
+
+        $keys = (array) $keys;
+
+        foreach ($keys as $key) {
+            if (!empty($this->get($key))) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Merge a given array or a Dot object with the given key
+     * or with the whole Dot object
+     *
+     * @param array|string|self $key
+     * @param array|self        $value
+     */
+    public function merge($key, $value = [])
+    {
+        if (is_array($key)) {
+            $this->items = array_merge($this->items, $key);
+        } elseif (is_string($key)) {
+            $items = (array) $this->get($key);
+            $value = array_merge($items, $this->getArrayItems($value));
+
+            $this->set($key, $value);
+        } elseif ($key instanceof self) {
+            $this->items = array_merge($this->items, $key->all());
+        }
+    }
+
+    /**
+     * Recursively merge a given array or a Dot object with the given key
+     * or with the whole Dot object.
+     *
+     * Duplicate keys are converted to arrays.
+     *
+     * @param array|string|self $key
+     * @param array|self        $value
+     */
+    public function mergeRecursive($key, $value = [])
+    {
+        if (is_array($key)) {
+            $this->items = array_merge_recursive($this->items, $key);
+        } elseif (is_string($key)) {
+            $items = (array) $this->get($key);
+            $value = array_merge_recursive($items, $this->getArrayItems($value));
+
+            $this->set($key, $value);
+        } elseif ($key instanceof self) {
+            $this->items = array_merge_recursive($this->items, $key->all());
+        }
+    }
+
+    /**
+     * Recursively merge a given array or a Dot object with the given key
+     * or with the whole Dot object.
+     *
+     * Instead of converting duplicate keys to arrays, the value from
+     * given array will replace the value in Dot object.
+     *
+     * @param array|string|self $key
+     * @param array|self        $value
+     */
+    public function mergeRecursiveDistinct($key, $value = [])
+    {
+        if (is_array($key)) {
+            $this->items = $this->arrayMergeRecursiveDistinct($this->items, $key);
+        } elseif (is_string($key)) {
+            $items = (array) $this->get($key);
+            $value = $this->arrayMergeRecursiveDistinct($items, $this->getArrayItems($value));
+
+            $this->set($key, $value);
+        } elseif ($key instanceof self) {
+            $this->items = $this->arrayMergeRecursiveDistinct($this->items, $key->all());
+        }
+    }
+
+    /**
+     * Merges two arrays recursively. In contrast to array_merge_recursive,
+     * duplicate keys are not converted to arrays but rather overwrite the
+     * value in the first array with the duplicate value in the second array.
+     *
+     * @param  array $array1 Initial array to merge
+     * @param  array $array2 Array to recursively merge
+     * @return array
+     */
+    protected function arrayMergeRecursiveDistinct(array $array1, array $array2)
+    {
+        $merged = &$array1;
+
+        foreach ($array2 as $key => $value) {
+            if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) {
+                $merged[$key] = $this->arrayMergeRecursiveDistinct($merged[$key], $value);
+            } else {
+                $merged[$key] = $value;
+            }
+        }
+
+        return $merged;
+    }
+
+    /**
+     * Return the value of a given key and
+     * delete the key
+     *
+     * @param  int|string|null $key
+     * @param  mixed           $default
+     * @return mixed
+     */
+    public function pull($key = null, $default = null)
+    {
+        if (is_null($key)) {
+            $value = $this->all();
+            $this->clear();
+
+            return $value;
+        }
+
+        $value = $this->get($key, $default);
+        $this->delete($key);
+
+        return $value;
+    }
+
+    /**
+     * Push a given value to the end of the array
+     * in a given key
+     *
+     * @param mixed $key
+     * @param mixed $value
+     */
+    public function push($key, $value = null)
+    {
+        if (is_null($value)) {
+            $this->items[] = $key;
+
+            return;
+        }
+
+        $items = $this->get($key);
+
+        if (is_array($items) || is_null($items)) {
+            $items[] = $value;
+            $this->set($key, $items);
+        }
+    }
+
+    /**
+     * Replace all values or values within the given key
+     * with an array or Dot object
+     *
+     * @param array|string|self $key
+     * @param array|self        $value
+     */
+    public function replace($key, $value = [])
+    {
+        if (is_array($key)) {
+            $this->items = array_replace($this->items, $key);
+        } elseif (is_string($key)) {
+            $items = (array) $this->get($key);
+            $value = array_replace($items, $this->getArrayItems($value));
+
+            $this->set($key, $value);
+        } elseif ($key instanceof self) {
+            $this->items = array_replace($this->items, $key->all());
+        }
+    }
+
+    /**
+     * Set a given key / value pair or pairs
+     *
+     * @param array|int|string $keys
+     * @param mixed            $value
+     */
+    public function set($keys, $value = null)
+    {
+        if (is_array($keys)) {
+            foreach ($keys as $key => $value) {
+                $this->set($key, $value);
+            }
+
+            return;
+        }
+
+        $items = &$this->items;
+
+        foreach (explode('.', $keys) as $key) {
+            if (!isset($items[$key]) || !is_array($items[$key])) {
+                $items[$key] = [];
+            }
+
+            $items = &$items[$key];
+        }
+
+        $items = $value;
+    }
+
+    /**
+     * Replace all items with a given array
+     *
+     * @param mixed $items
+     */
+    public function setArray($items)
+    {
+        $this->items = $this->getArrayItems($items);
+    }
+
+    /**
+     * Replace all items with a given array as a reference
+     *
+     * @param array $items
+     */
+    public function setReference(array &$items)
+    {
+        $this->items = &$items;
+    }
+
+    /**
+     * Return the value of a given key or all the values as JSON
+     *
+     * @param  mixed  $key
+     * @param  int    $options
+     * @return string
+     */
+    public function toJson($key = null, $options = 0)
+    {
+        if (is_string($key)) {
+            return json_encode($this->get($key), $options);
+        }
+
+        $options = $key === null ? 0 : $key;
+
+        return json_encode($this->items, $options);
+    }
+
+    /*
+     * --------------------------------------------------------------
+     * ArrayAccess interface
+     * --------------------------------------------------------------
+     */
+
+    /**
+     * Check if a given key exists
+     *
+     * @param  int|string $key
+     * @return bool
+     */
+    public function offsetExists($key)
+    {
+        return $this->has($key);
+    }
+
+    /**
+     * Return the value of a given key
+     *
+     * @param  int|string $key
+     * @return mixed
+     */
+    public function offsetGet($key)
+    {
+        return $this->get($key);
+    }
+
+    /**
+     * Set a given value to the given key
+     *
+     * @param int|string|null $key
+     * @param mixed           $value
+     */
+    public function offsetSet($key, $value)
+    {
+        if (is_null($key)) {
+            $this->items[] = $value;
+
+            return;
+        }
+
+        $this->set($key, $value);
+    }
+
+    /**
+     * Delete the given key
+     *
+     * @param int|string $key
+     */
+    public function offsetUnset($key)
+    {
+        $this->delete($key);
+    }
+
+    /*
+     * --------------------------------------------------------------
+     * Countable interface
+     * --------------------------------------------------------------
+     */
+
+    /**
+     * Return the number of items in a given key
+     *
+     * @param  int|string|null $key
+     * @return int
+     */
+    public function count($key = null)
+    {
+        return count($this->get($key));
+    }
+
+    /*
+     * --------------------------------------------------------------
+     * IteratorAggregate interface
+     * --------------------------------------------------------------
+     */
+
+     /**
+     * Get an iterator for the stored items
+     *
+     * @return \ArrayIterator
+     */
+    public function getIterator()
+    {
+        return new ArrayIterator($this->items);
+    }
+
+    /*
+     * --------------------------------------------------------------
+     * JsonSerializable interface
+     * --------------------------------------------------------------
+     */
+
+    /**
+     * Return items for JSON serialization
+     *
+     * @return array
+     */
+    public function jsonSerialize()
+    {
+        return $this->items;
+    }
+}

+ 23 - 0
vendor/adbario/php-dot-notation/src/helpers.php

xqd
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Dot - PHP dot notation access to arrays
+ *
+ * @author  Riku Särkinen <riku@adbar.io>
+ * @link    https://github.com/adbario/php-dot-notation
+ * @license https://github.com/adbario/php-dot-notation/blob/2.x/LICENSE.md (MIT License)
+ */
+
+use Adbar\Dot;
+
+if (! function_exists('dot')) {
+    /**
+     * Create a new Dot object with the given items
+     *
+     * @param  mixed $items
+     * @return \Adbar\Dot
+     */
+    function dot($items)
+    {
+        return new Dot($items);
+    }
+}

+ 300 - 0
vendor/alibabacloud/client/CHANGELOG.md

xqd
@@ -0,0 +1,300 @@
+# CHANGELOG
+
+## 1.5.29 - 2020-08-03
+- Fixed RPC Signature.
+
+## 1.5.28 - 2020-08-03
+- Updated `endpoints`.
+
+## 1.5.27 - 2020-07-17
+- Fixed composer error config.
+
+## 1.5.26 - 2020-07-17
+- Validate RegionID/EndpointSuffix/Network.
+
+## 1.5.25 - 2020-07-04
+- Fixed ROA signature.
+- Deprecated `LogFormatter`.
+
+## 1.5.24 - 2020-06-04
+- Fixed Resolve Host.
+
+## 1.5.23 - 2020-05-22
+- Optimized global product support.
+
+## 1.5.22 - 2020-05-12
+- Updated Endpoints.
+
+## 1.5.21 - 2020-02-26
+- Improved Nonce.
+- Updated Endpoints.
+
+## 1.5.20 - 2019-12-30
+- Improved Docs.
+- Updated Endpoints.
+
+## 1.5.19 - 2019-12-17
+- Updated Endpoints.
+
+## 1.5.18 - 2019-10-11
+- Updated Request link.
+- Updated Endpoints data.
+
+## 1.5.17 - 2019-09-15
+- Improved Host Finder.
+- Updated Endpoints Data.
+
+## 1.5.16 - 2019-08-21
+- Updated Endpoints Data.
+
+## 1.5.15 - 2019-08-14
+- Improved Client.
+
+
+## 1.5.14 - 2019-07-25
+- Improved Credential Filter.
+
+
+## 1.5.13 - 2019-07-18
+- Improved API Resolver.
+
+
+## 1.5.12 - 2019-06-20
+- Fixed Signature for ROA.
+
+
+## 1.5.11 - 2019-06-14
+- Added endpoint rules.
+
+
+## 1.5.10 - 2019-06-13
+- Improved `Resovler`.
+- Updated `endpoints`.
+
+
+## 1.5.9 - 2019-06-04
+- Improved `UUID`.
+
+
+## 1.5.8 - 2019-05-30
+- Improved `Arrays`.
+
+
+## 1.5.7 - 2019-05-29
+- Improved `uuid`.
+
+
+## 1.5.6 - 2019-05-29
+- Fixed `uuid` version lock.
+
+
+## 1.5.5 - 2019-05-23
+- Improved `Signature`.
+
+
+## 1.5.4 - 2019-05-22
+- Updated `Endpoints`.
+- Fixed `Content-Type` in header.
+
+
+## 1.5.3 - 2019-05-13
+- Improved `Endpoint` tips.
+- Improved `Endpoints` for `STS`.
+
+
+## 1.5.2 - 2019-05-10
+- Improved `Result` object.
+
+
+## 1.5.1 - 2019-05-09
+- Supported `Resolver` for Third-party dependencies.
+
+
+## 1.5.0 - 2019-05-07
+- Improved `Resolver` for products.
+
+
+## 1.4.0 - 2019-05-06
+- Support `Retry` and `Asynchronous` for Request.
+
+
+## 1.3.1 - 2019-04-30
+- Allow timeouts to be set in microseconds.
+
+
+## 1.3.0 - 2019-04-18
+- Improved parameters methods.
+- Optimized the logic for body encode.
+
+
+## 1.2.1 - 2019-04-11
+- Improve exception code and message for `Region ID`.
+
+
+## 1.2.0 - 2019-04-11
+- Improve exception message for `Region ID`.
+
+
+## 1.1.1 - 2019-04-02
+- Added endpoints for `batchcomputenew`, `privatelink`.
+- Improve Region ID tips.
+
+
+## 1.1.0 - 2019-04-01
+- Updated `composer.json`.
+
+
+## 1.0.27 - 2019-03-31
+- Support `Policy` for `ramRoleArnClient`.
+
+
+## 1.0.26 - 2019-03-27
+- Support `pid`, `cost`, `start_time` for Log.
+
+
+## 1.0.25 - 2019-03-27
+- Updated default log format.
+- Add endpoints for `dbs`.
+
+
+## 1.0.24 - 2019-03-26
+- Support Log.
+
+
+## 1.0.23 - 2019-03-23
+- Remove SVG.
+
+
+## 1.0.22 - 2019-03-20
+- Add endpoint `cn-hangzhou` for `idaas` .
+
+
+## 1.0.21 - 2019-03-19
+- Installing by Using the ZIP file.
+- Update Docs.
+
+
+## 1.0.20 - 2019-03-13
+- Improve Tests.
+- Update Docs.
+
+
+## 1.0.19 - 2019-03-12
+- Add SSL Verify Option `verify()`.
+
+
+## 1.0.18 - 2019-03-11
+- Add endpoints for `acr`.
+- Add endpoints for `faas`.
+- Add endpoints for `ehs`.
+- SSL certificates are not validated by default.
+
+
+## 1.0.17 - 2019-03-08
+- Support Mock for Test.
+
+
+## 1.0.16 - 2019-03-07
+- Support Credential Provider Chain.
+- Support `CCC`.
+- Add `ap-south-1` for `cas`.
+- Add `ap-southeast-1` for `waf`.
+- Update Docs.
+
+
+## 1.0.15 - 2019-02-27
+- Add endpoints for `Chatbot`.
+- Change endpoints for `drdspost` and `drdspre`.
+
+
+## 1.0.14 - 2019-02-21
+- Enable debug mode by set environment variable `DEBUG=sdk`.
+
+
+## 1.0.13 - 2019-02-18
+- Support Release Script `composer release`.
+- Add endpoints for apigateway in `drdspre` in `cn-qingdao`.
+- Add endpoints for apigateway in `drdspre` in `cn-beijing`.
+- Add endpoints for apigateway in `drdspre` in `cn-hangzhou`.
+- Add endpoints for apigateway in `drdspre` in `cn-shanghai`.
+- Add endpoints for apigateway in `drdspre` in `cn-shenzhen`.
+- Add endpoints for apigateway in `drdspre` in `cn-hongkong`.
+- Add endpoints for apigateway in `drdspost` in `ap-southeast-1`.
+- Add endpoints for apigateway in `drdspost` in `cn-shanghai`.
+- Add endpoints for apigateway in `drdspost` in `cn-hongkong`.
+- Add endpoints for apigateway in `vod` in `ap-southeast-1`.
+- Add endpoints for apigateway in `vod` in `eu-central-1`.
+
+
+## 1.0.12 - 2019-02-16
+- Support `open_basedir`.
+
+
+## 1.0.11 - 2019-02-13
+- Improve User Agent.
+
+
+## 1.0.10 - 2019-02-12
+- `userAgentAppend` is renamed to `appendUserAgent`.
+
+
+## 1.0.9 - 2019-02-12
+- `userAgent` is renamed to `userAgentAppend`.
+
+
+## 1.0.8 - 2019-02-11
+- `userAgent` - Support DIY User Agent.
+- Add endpoints for apigateway in Zhangjiakou.
+- Add endpoints for apigateway in Hu He Hao Te.
+- Add endpoints for vod in Hu He Hao Te.
+- Add endpoints for hsm in Zhangjiakou.
+- Add endpoints for luban in Germany.
+- Add endpoints for linkwan in Hangzhou.
+- Add endpoints for drdspost in Singapore.
+
+
+## 1.0.7 - 2019-01-28
+- Add endpoints for gpdb in Tokyo.
+- Add endpoints for elasticsearch in Beijing.
+
+
+## 1.0.6 - 2019-01-23
+- Add endpoints for dysmsapi in Singapore.
+- Add endpoints for dybaseapi.
+- Add endpoints for dyiotapi.
+- Add endpoints for dycdpapi.
+- Add endpoints for dyplsapi.
+- Add endpoints for dypnsapi.
+- Add endpoints for dyvmsapi.
+- Add endpoints for snsuapi.
+
+
+## 1.0.5 - 2019-01-21
+- Add endpoints for ApiGateway in Silicon Valley, Virginia.
+- Add endpoints for Image Search in Shanghai.
+
+
+## 1.0.4 - 2019-01-17
+- Support fixer all.
+- Add Endpoints.
+
+
+## 1.0.3 - 2019-01-15
+- Update Endpoints.
+- Update README.md.
+- Update Return Result Message.
+
+
+## 1.0.2 - 2019-01-15
+- Optimize the documentation.
+- Adjust the CI configuration.
+
+
+## 1.0.1 - 2019-01-09
+- Distinguish credential error.
+- Add endpoints for NLS.
+- Add not found product tip.
+
+
+## 1.0.0 - 2019-01-07
+- Initial release of the Alibaba Cloud Client for PHP Version 1.0.0 on Packagist See <https://github.com/aliyun/openapi-sdk-php-client> for more information.

+ 30 - 0
vendor/alibabacloud/client/CONTRIBUTING.md

xqd
@@ -0,0 +1,30 @@
+# Contributing to the Alibaba Cloud Client for PHP
+
+We work hard to provide a high-quality and useful SDK for Alibaba Cloud, and
+we greatly value feedback and contributions from our community. Please submit
+your [issues][issues] or [pull requests][pull-requests] through GitHub.
+
+## Tips
+
+- The SDK is released under the [Apache license][license]. Any code you submit
+   will be released under that license. For substantial contributions, we may
+   ask you to sign a [Alibaba Documentation Corporate Contributor License 
+   Agreement (CLA)][cla].
+- We follow all of the relevant PSR recommendations from the [PHP Framework
+   Interop Group][php-fig]. Please submit code that follows these standards.
+   The [PHP CS Fixer][cs-fixer] tool can be helpful for formatting your code.
+   Your can use `composer fixer` to fix code.
+- We maintain a high percentage of code coverage in our unit tests. If you make
+   changes to the code, please add, update, and/or remove tests as appropriate.
+- If your code does not conform to the PSR standards, does not include adequate
+   tests, or does not contain a changelog document, we may ask you to update
+   your pull requests before we accept them. We also reserve the right to deny
+   any pull requests that do not align with our standards or goals.
+
+[issues]: https://github.com/aliyun/openapi-sdk-php-client/issues
+[pull-requests]: https://github.com/aliyun/openapi-sdk-php-client/pulls
+[license]: http://www.apache.org/licenses/LICENSE-2.0
+[cla]: https://alibaba-cla-2018.oss-cn-beijing.aliyuncs.com/Alibaba_Documentation_Open_Source_Corporate_CLA.pdf
+[php-fig]: http://php-fig.org
+[cs-fixer]: http://cs.sensiolabs.org/
+[docs-readme]: https://github.com/aliyun/openapi-sdk-php-client/blob/master/README.md

+ 13 - 0
vendor/alibabacloud/client/LICENSE.md

xqd
@@ -0,0 +1,13 @@
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.

+ 88 - 0
vendor/alibabacloud/client/NOTICE.md

xqd
@@ -0,0 +1,88 @@
+# Alibaba Cloud Client for PHP
+
+<https://www.alibabacloud.com/>
+
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License").
+You may not use this file except in compliance with the License.
+A copy of the License is located at
+
+<http://www.apache.org/licenses/LICENSE-2.0>
+
+or in the "license" file accompanying this file. This file is distributed
+on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+express or implied. See the License for the specific language governing
+permissions and limitations under the License.
+
+# Guzzle
+
+<https://github.com/guzzle/guzzle>
+
+Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
+
+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.
+
+# jmespath.php
+
+<https://github.com/mtdowling/jmespath.php>
+
+Copyright (c) 2014 Michael Dowling, https://github.com/mtdowling
+
+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.
+
+# Dot
+
+<https://github.com/adbario/php-dot-notation>
+
+Copyright (c) 2016-2019 Riku Särkinen
+
+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.

+ 166 - 0
vendor/alibabacloud/client/README-zh-CN.md

xqd
@@ -0,0 +1,166 @@
+[English](/README.md) | 简体中文
+
+
+# Alibaba Cloud Client for PHP
+[![Latest Stable Version](https://poser.pugx.org/alibabacloud/client/v/stable)](https://packagist.org/packages/alibabacloud/client)
+[![composer.lock](https://poser.pugx.org/alibabacloud/client/composerlock)](https://packagist.org/packages/alibabacloud/client)
+[![Total Downloads](https://poser.pugx.org/alibabacloud/client/downloads)](https://packagist.org/packages/alibabacloud/client)
+[![License](https://poser.pugx.org/alibabacloud/client/license)](https://packagist.org/packages/alibabacloud/client)
+[![codecov](https://codecov.io/gh/aliyun/openapi-sdk-php-client/branch/master/graph/badge.svg)](https://codecov.io/gh/aliyun/openapi-sdk-php-client)
+[![Travis Build Status](https://travis-ci.org/aliyun/openapi-sdk-php-client.svg?branch=master)](https://travis-ci.org/aliyun/openapi-sdk-php-client)
+[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/qb8j3lhg8349k0hk/branch/master?svg=true)](https://ci.appveyor.com/project/aliyun/openapi-sdk-php-client/branch/master)
+
+
+![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)
+
+
+Alibaba Cloud Client for PHP 是帮助 PHP 开发者管理凭据、发送请求的客户端工具,[Alibaba Cloud SDK for PHP][SDK] 由本工具提供底层支持。
+
+
+## 在线示例
+[API Explorer](https://api.aliyun.com) 提供在线调用阿里云产品,并动态生成 SDK 代码和快速检索接口等能力,能显著降低使用云 API 的难度。
+
+
+## 先决条件
+您的系统需要满足[先决条件](/docs/zh-CN/0-Prerequisites.md),包括 PHP> = 5.5。 我们强烈建议使用cURL扩展,并使用TLS后端编译cURL 7.16.2+。
+
+
+## 安装依赖
+如果已在系统上[全局安装 Composer](https://getcomposer.org/doc/00-intro.md#globally),请直接在项目目录中运行以下内容来安装 Alibaba Cloud Client for PHP 作为依赖项:
+```
+composer require alibabacloud/client
+```
+> 一些用户可能由于网络问题无法安装,可以使用[阿里云 Composer 全量镜像](https://developer.aliyun.com/composer)。
+
+请看[安装](/docs/zh-CN/1-Installation.md)有关通过 Composer 和其他方式安装的详细信息。
+
+
+## 快速使用
+在您开始之前,您需要注册阿里云帐户并获取您的[凭证](https://usercenter.console.aliyun.com/#/manage/ak)。
+
+```php
+<?php
+
+use AlibabaCloud\Client\AlibabaCloud;
+
+AlibabaCloud::accessKeyClient('accessKeyId', 'accessKeySecret')->asDefaultClient();
+```
+
+
+## 请求
+> 请求风格分为 `ROA` 和 `RPC`,不同产品风格不同,使用前,请参考产品文档。推荐使用 [Alibaba Cloud SDK for PHP][SDK] ,细节已被封装,无需关心风格。
+
+
+### ROA 请求
+```php
+<?php
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+
+try {
+    $result = AlibabaCloud::roa()
+                          ->regionId('cn-hangzhou') // 指定请求的区域,不指定则使用客户端区域、默认区域
+                          ->product('CS') // 指定产品
+                          ->version('2015-12-15') // 指定产品版本
+                          ->action('DescribeClusterServices') // 指定产品接口
+                          ->serviceCode('cs') // 设置 ServiceCode 以备寻址,非必须
+                          ->endpointType('openAPI') // 设置类型,非必须
+                          ->method('GET') // 指定请求方式
+                          ->host('cs.aliyun.com') // 指定域名则不会寻址,如认证方式为 Bearer Token 的服务则需要指定
+                          ->pathPattern('/clusters/[ClusterId]/services') // 指定ROA风格路径规则
+                          ->withClusterId('123456') // 为路径中参数赋值,方法名:with + 参数
+                          ->request(); // 发起请求并返回结果对象,请求需要放在设置的最后面
+
+    print_r($result->toArray());
+    
+} catch (ClientException $exception) {
+    print_r($exception->getErrorMessage());
+} catch (ServerException $exception) {
+    print_r($exception->getErrorMessage());
+}
+```
+
+### RPC 请求
+```php
+<?php
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+
+try {
+    $result = AlibabaCloud::rpc()
+                          ->product('Cdn')
+                          ->version('2014-11-11')
+                          ->action('DescribeCdnService')
+                          ->method('POST')
+                          ->request();
+
+    print_r($result->toArray());
+
+} catch (ClientException $exception) {
+    print_r($exception->getErrorMessage());
+} catch (ServerException $exception) {
+    print_r($exception->getErrorMessage());
+}
+```
+
+
+## 文档
+* [先决条件](/docs/zh-CN/0-Prerequisites.md)
+* [安装](/docs/zh-CN/1-Installation.md)
+* [客户端和凭证](/docs/zh-CN/2-Client.md)
+* [请求](/docs/zh-CN/3-Request.md)
+* [结果](/docs/zh-CN/4-Result.md)
+* [区域](/docs/zh-CN/5-Region.md)
+* [域名](/docs/zh-CN/6-Host.md)
+* [SSL 验证](/docs/zh-CN/7-Verify.md)
+* [调试](/docs/zh-CN/8-Debug.md)
+* [日志](/docs/zh-CN/9-Log.md)
+* [测试](/docs/zh-CN/10-Test.md)
+
+
+## 问题
+[提交 Issue](https://github.com/aliyun/openapi-sdk-php-client/issues/new/choose),不符合指南的问题可能会立即关闭。
+
+
+## 发行说明
+每个版本的详细更改记录在[发行说明](/CHANGELOG.md)中。
+
+
+## 贡献
+提交 Pull Request 之前请阅读[贡献指南](/CONTRIBUTING.md)。
+
+
+## 相关
+* [阿里云服务 Regions & Endpoints][endpoints]
+* [OpenAPI Explorer][open-api]
+* [Packagist][packagist]
+* [Composer][composer]
+* [Guzzle中文文档][guzzle-docs]
+* [最新源码][latest-release]
+
+
+## 许可证
+[Apache-2.0](/LICENSE.md)
+
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
+
+
+[SDK]: https://github.com/aliyun/openapi-sdk-php
+[open-api]: https://api.aliyun.com
+[latest-release]: https://github.com/aliyun/openapi-sdk-php-client
+[guzzle-docs]: https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html
+[composer]: https://getcomposer.org
+[packagist]: https://packagist.org/packages/alibabacloud/sdk
+[home]: https://home.console.aliyun.com
+[aliyun]: https://www.aliyun.com
+[regions]: https://help.aliyun.com/document_detail/40654.html
+[endpoints]: https://developer.aliyun.com/endpoints
+[cURL]: http://php.net/manual/zh/book.curl.php
+[OPCache]: http://php.net/manual/zh/book.opcache.php
+[xdebug]: http://xdebug.org
+[OpenSSL]: http://php.net/manual/zh/book.openssl.php
+[client]: https://github.com/aliyun/openapi-sdk-php-client

+ 167 - 0
vendor/alibabacloud/client/README.md

xqd
@@ -0,0 +1,167 @@
+English | [简体中文](/README-zh-CN.md)
+
+
+# Alibaba Cloud Client for PHP
+[![Latest Stable Version](https://poser.pugx.org/alibabacloud/client/v/stable)](https://packagist.org/packages/alibabacloud/client)
+[![composer.lock](https://poser.pugx.org/alibabacloud/client/composerlock)](https://packagist.org/packages/alibabacloud/client)
+[![Total Downloads](https://poser.pugx.org/alibabacloud/client/downloads)](https://packagist.org/packages/alibabacloud/client)
+[![License](https://poser.pugx.org/alibabacloud/client/license)](https://packagist.org/packages/alibabacloud/client)
+[![codecov](https://codecov.io/gh/aliyun/openapi-sdk-php-client/branch/master/graph/badge.svg)](https://codecov.io/gh/aliyun/openapi-sdk-php-client)
+[![Travis Build Status](https://travis-ci.org/aliyun/openapi-sdk-php-client.svg?branch=master)](https://travis-ci.org/aliyun/openapi-sdk-php-client)
+[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/qb8j3lhg8349k0hk/branch/master?svg=true)](https://ci.appveyor.com/project/aliyun/openapi-sdk-php-client/branch/master)
+
+
+![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)
+
+
+Alibaba Cloud Client for PHP is a client tool that helps PHP developers manage credentials and send requests, [Alibaba Cloud SDK for PHP][SDK] dependency on this tool.
+
+
+## Online Demo
+[API Explorer](https://api.aliyun.com) provides the ability to call the cloud product OpenAPI online, and dynamically generate SDK Example code and quick retrieval interface, which can significantly reduce the difficulty of using the cloud API.
+
+
+## Prerequisites
+Your system will need to meet the [Prerequisites](/docs/en-US/0-Prerequisites.md), including having PHP >= 5.5. We highly recommend having it compiled with the cURL extension and cURL 7.16.2+.
+
+
+## Installation
+If Composer is already [installed globally on your system](https://getcomposer.org/doc/00-intro.md#globally), run the following in the base directory of your project to install Alibaba Cloud Client for PHP as a dependency:
+```
+composer require alibabacloud/client
+```
+> Some users may not be able to install due to network problems, you can try to switch the Composer mirror.
+
+Please see the [Installation](/docs/en-US/1-Installation.md) for more detailed information about installing the Alibaba Cloud Client for PHP through Composer and other means.
+
+
+## Quick Examples
+Before you begin, you need to sign up for an Alibaba Cloud account and retrieve your [Credentials](https://usercenter.console.aliyun.com/#/manage/ak).
+
+### Create Client
+```php
+<?php
+
+use AlibabaCloud\Client\AlibabaCloud;
+
+AlibabaCloud::accessKeyClient('accessKeyId', 'accessKeySecret')->asDefaultClient();
+```
+
+
+## Request
+> Request styles are divided into `ROA` and `RPC`. Different product styles are different. Please refer to the product documentation before using. It is recommended to use [Alibaba cloud SDK for PHP][SDK], the details have been encapsulated, and you do not need to care about the style.
+
+
+### ROA Request
+```php
+<?php
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+
+try {
+    $result = AlibabaCloud::roa()
+                          ->regionId('cn-hangzhou') // Specify the requested regionId, if not specified, use the client regionId, then default regionId
+                          ->product('CS') // Specify product
+                          ->version('2015-12-15') // Specify product version
+                          ->action('DescribeClusterServices') // Specify product interface
+                          ->serviceCode('cs') // Set ServiceCode for addressing, optional
+                          ->endpointType('openAPI') // Set type, optional
+                          ->method('GET') // Set request method
+                          ->host('cs.aliyun.com') // Location Service will not be enabled if the host is specified. For example, service with a Certification type-Bearer Token should be specified
+                          ->pathPattern('/clusters/[ClusterId]/services') // Specify path rule with ROA-style
+                          ->withClusterId('123456') // Assign values to parameters in the path. Method: with + Parameter
+                          ->request(); // Make a request and return to result object. The request is to be placed at the end of the setting
+                          
+    print_r($result->toArray());
+    
+} catch (ClientException $exception) {
+    print_r($exception->getErrorMessage());
+} catch (ServerException $exception) {
+    print_r($exception->getErrorMessage());
+}
+```
+
+### RPC Request
+```php
+<?php
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+
+try {
+    $result = AlibabaCloud::rpc()
+                          ->product('Cdn')
+                          ->version('2014-11-11')
+                          ->action('DescribeCdnService')
+                          ->method('POST')
+                          ->request();
+    
+    print_r($result->toArray());
+    
+} catch (ClientException $exception) {
+    print_r($exception->getErrorMessage());
+} catch (ServerException $exception) {
+    print_r($exception->getErrorMessage());
+}
+```
+
+
+## Documentation
+* [Prerequisites](/docs/en-US/0-Prerequisites.md)
+* [Installation](/docs/en-US/1-Installation.md)
+* [Client & Credentials](/docs/en-US/2-Client.md)
+* [Request](/docs/en-US/3-Request.md)
+* [Result](/docs/en-US/4-Result.md)
+* [Region](/docs/en-US/5-Region.md)
+* [Host](/docs/en-US/6-Host.md)
+* [SSL Verify](/docs/en-US/7-Verify.md)
+* [Debug](/docs/en-US/8-Debug.md)
+* [Log](/docs/en-US/9-Log.md)
+* [Test](/docs/en-US/10-Test.md)
+
+
+## Issues
+[Opening an Issue](https://github.com/aliyun/openapi-sdk-php-client/issues/new/choose), Issues not conforming to the guidelines may be closed immediately.
+
+
+## Changelog
+Detailed changes for each release are documented in the [release notes](/CHANGELOG.md).
+
+
+## Contribution
+Please make sure to read the [Contributing Guide](/CONTRIBUTING.md) before making a pull request.
+
+
+## References
+* [Alibaba Cloud Regions & Endpoints][endpoints]
+* [OpenAPI Explorer][open-api]
+* [Packagist][packagist]
+* [Composer][composer]
+* [Guzzle Documentation][guzzle-docs]
+* [Latest Release][latest-release]
+
+
+## License
+[Apache-2.0](/LICENSE.md)
+
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
+
+
+[SDK]: https://github.com/aliyun/openapi-sdk-php
+[open-api]: https://api.alibabacloud.com
+[latest-release]: https://github.com/aliyun/openapi-sdk-php-client
+[guzzle-docs]: http://docs.guzzlephp.org/en/stable/request-options.html
+[composer]: https://getcomposer.org
+[packagist]: https://packagist.org/packages/alibabacloud/sdk
+[home]: https://home.console.aliyun.com
+[alibabacloud]: https://www.alibabacloud.com
+[regions]: https://www.alibabacloud.com/help/doc-detail/40654.html
+[endpoints]: https://developer.aliyun.com/endpoints
+[cURL]: http://php.net/manual/en/book.curl.php
+[OPCache]: http://php.net/manual/en/book.opcache.php
+[xdebug]: http://xdebug.org
+[OpenSSL]: http://php.net/manual/en/book.openssl.php
+[client]: https://github.com/aliyun/openapi-sdk-php-client

+ 6 - 0
vendor/alibabacloud/client/UPGRADING.md

xqd
@@ -0,0 +1,6 @@
+Upgrading Guide
+===============
+
+1.x
+-----------------------
+- This is the first version. See <https://github.com/aliyun/openapi-sdk-php-client> for more information.

+ 116 - 0
vendor/alibabacloud/client/composer.json

xqd
@@ -0,0 +1,116 @@
+{
+  "name": "alibabacloud/client",
+  "homepage": "https://www.alibabacloud.com/",
+  "description": "Alibaba Cloud Client for PHP - Use Alibaba Cloud in your PHP project",
+  "keywords": [
+    "sdk",
+    "tool",
+    "cloud",
+    "client",
+    "aliyun",
+    "library",
+    "alibaba",
+    "alibabacloud"
+  ],
+  "type": "library",
+  "license": "Apache-2.0",
+  "support": {
+    "source": "https://github.com/aliyun/openapi-sdk-php-client",
+    "issues": "https://github.com/aliyun/openapi-sdk-php-client/issues"
+  },
+  "authors": [
+    {
+      "name": "Alibaba Cloud SDK",
+      "email": "sdk-team@alibabacloud.com",
+      "homepage": "http://www.alibabacloud.com"
+    }
+  ],
+  "require": {
+    "php": ">=5.5",
+    "ext-curl": "*",
+    "ext-json": "*",
+    "ext-libxml": "*",
+    "ext-openssl": "*",
+    "ext-mbstring": "*",
+    "ext-simplexml": "*",
+    "ext-xmlwriter": "*",
+    "guzzlehttp/guzzle": "^6.3|^7.0",
+    "danielstjules/stringy": "^3.1",
+    "mtdowling/jmespath.php": "^2.5",
+    "adbario/php-dot-notation": "^2.2",
+    "clagiordano/weblibs-configmanager": "^1.0"
+  },
+  "require-dev": {
+    "ext-spl": "*",
+    "ext-dom": "*",
+    "ext-pcre": "*",
+    "psr/cache": "^1.0",
+    "ext-sockets": "*",
+    "drupal/coder": "^8.3",
+    "symfony/dotenv": "^3.4",
+    "league/climate": "^3.2.4",
+    "phpunit/phpunit": "^5.7.27",
+    "monolog/monolog": "^1.24",
+    "composer/composer": "^1.8",
+    "mikey179/vfsstream": "^1.6",
+    "symfony/var-dumper": "^3.4"
+  },
+  "suggest": {
+    "ext-sockets": "To use client-side monitoring"
+  },
+  "autoload": {
+    "psr-4": {
+      "AlibabaCloud\\Client\\": "src"
+    },
+    "files": [
+      "src/Functions.php"
+    ]
+  },
+  "autoload-dev": {
+    "psr-4": {
+      "AlibabaCloud\\Client\\Tests\\": "tests/"
+    }
+  },
+  "config": {
+    "preferred-install": "dist",
+    "optimize-autoloader": true
+  },
+  "minimum-stability": "dev",
+  "prefer-stable": true,
+  "scripts-descriptions": {
+    "cs": "Tokenizes PHP, JavaScript and CSS files to detect violations of a defined coding standard.",
+    "cbf": "Automatically correct coding standard violations.",
+    "fixer": "Fixes code to follow standards.",
+    "test": "Run all tests.",
+    "unit": "Run Unit tests.",
+    "feature": "Run Feature tests.",
+    "clearCache": "Clear cache like coverage.",
+    "coverage": "Show Coverage html.",
+    "endpoints": "Update endpoints from OSS."
+  },
+  "scripts": {
+    "cs": "phpcs --standard=PSR2 -n ./",
+    "cbf": "phpcbf --standard=PSR2 -n ./",
+    "fixer": "php-cs-fixer fix ./",
+    "test": [
+      "phpunit --colors=always"
+    ],
+    "unit": [
+      "@clearCache",
+      "phpunit --testsuite=Unit --colors=always"
+    ],
+    "feature": [
+      "@clearCache",
+      "phpunit --testsuite=Feature --colors=always"
+    ],
+    "coverage": "open cache/coverage/index.html",
+    "clearCache": "rm -rf cache/*",
+    "endpoints": [
+      "AlibabaCloud\\Client\\Regions\\LocationService::updateEndpoints",
+      "@fixer"
+    ],
+    "release": [
+      "AlibabaCloud\\Client\\Release::release"
+    ]
+  }
+}

+ 53 - 0
vendor/alibabacloud/client/src/Accept.php

xqd
@@ -0,0 +1,53 @@
+<?php
+
+namespace AlibabaCloud\Client;
+
+/**
+ * Class Accept
+ *
+ * @package AlibabaCloud\Client
+ */
+class Accept
+{
+    /**
+     * @var string
+     */
+    private $format;
+
+    /**
+     * Accept constructor.
+     *
+     * @param string $format
+     */
+    private function __construct($format)
+    {
+        $this->format = $format;
+    }
+
+    /**
+     * @param $format
+     *
+     * @return Accept
+     */
+    public static function create($format)
+    {
+        return new static($format);
+    }
+
+    /**
+     * @return mixed|string
+     */
+    public function toString()
+    {
+        $key = \strtoupper($this->format);
+
+        $list = [
+            'JSON' => 'application/json',
+            'XML'  => 'application/xml',
+            'RAW'  => 'application/octet-stream',
+            'FORM' => 'application/x-www-form-urlencoded'
+        ];
+
+        return isset($list[$key]) ? $list[$key] : $list['RAW'];
+    }
+}

+ 62 - 0
vendor/alibabacloud/client/src/AlibabaCloud.php

xqd
@@ -0,0 +1,62 @@
+<?php
+
+namespace AlibabaCloud\Client;
+
+use AlibabaCloud\Client\Traits\LogTrait;
+use AlibabaCloud\Client\Traits\MockTrait;
+use AlibabaCloud\Client\Traits\ClientTrait;
+use AlibabaCloud\Client\Traits\HistoryTrait;
+use AlibabaCloud\Client\Traits\RequestTrait;
+use AlibabaCloud\Client\Traits\EndpointTrait;
+use AlibabaCloud\Client\Traits\DefaultRegionTrait;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class AlibabaCloud
+ *
+ * @package   AlibabaCloud\Client
+ * @mixin     \AlibabaCloud\IdeHelper
+ */
+class AlibabaCloud
+{
+    use ClientTrait;
+    use DefaultRegionTrait;
+    use EndpointTrait;
+    use RequestTrait;
+    use MockTrait;
+    use HistoryTrait;
+    use LogTrait;
+
+    /**
+     * Version of the Client
+     */
+    const VERSION = '1.5.29';
+
+    /**
+     * This static method can directly call the specific service.
+     *
+     * @param string $product
+     * @param array  $arguments
+     *
+     * @codeCoverageIgnore
+     * @return object
+     * @throws ClientException
+     */
+    public static function __callStatic($product, $arguments)
+    {
+        $product = \ucfirst($product);
+
+        $product_class = 'AlibabaCloud' . '\\' . $product . '\\' . $product;
+
+        if (\class_exists($product_class)) {
+            return new $product_class;
+        }
+
+        throw new ClientException(
+            "May not yet support product $product quick access, "
+            . 'you can use [Alibaba Cloud Client for PHP] to send any custom '
+            . 'requests: https://github.com/aliyun/openapi-sdk-php-client/blob/master/docs/en-US/3-Request.md',
+            SDK::SERVICE_NOT_FOUND
+        );
+    }
+}

+ 30 - 0
vendor/alibabacloud/client/src/Clients/AccessKeyClient.php

xqd
@@ -0,0 +1,30 @@
+<?php
+
+namespace AlibabaCloud\Client\Clients;
+
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Signature\ShaHmac1Signature;
+use AlibabaCloud\Client\Credentials\AccessKeyCredential;
+
+/**
+ * Use the AccessKey to complete the authentication.
+ *
+ * @package   AlibabaCloud\Client\Clients
+ */
+class AccessKeyClient extends Client
+{
+
+    /**
+     * @param string $accessKeyId
+     * @param string $accessKeySecret
+     *
+     * @throws ClientException
+     */
+    public function __construct($accessKeyId, $accessKeySecret)
+    {
+        parent::__construct(
+            new AccessKeyCredential($accessKeyId, $accessKeySecret),
+            new ShaHmac1Signature()
+        );
+    }
+}

+ 29 - 0
vendor/alibabacloud/client/src/Clients/BearerTokenClient.php

xqd
@@ -0,0 +1,29 @@
+<?php
+
+namespace AlibabaCloud\Client\Clients;
+
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Signature\BearerTokenSignature;
+use AlibabaCloud\Client\Credentials\BearerTokenCredential;
+
+/**
+ * Use the Bearer Token to complete the authentication.
+ *
+ * @package   AlibabaCloud\Client\Clients
+ */
+class BearerTokenClient extends Client
+{
+
+    /**
+     * @param string $bearerToken
+     *
+     * @throws ClientException
+     */
+    public function __construct($bearerToken)
+    {
+        parent::__construct(
+            new BearerTokenCredential($bearerToken),
+            new BearerTokenSignature()
+        );
+    }
+}

+ 72 - 0
vendor/alibabacloud/client/src/Clients/Client.php

xqd
@@ -0,0 +1,72 @@
+<?php
+
+namespace AlibabaCloud\Client\Clients;
+
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\Traits\HttpTrait;
+use AlibabaCloud\Client\Traits\RegionTrait;
+use AlibabaCloud\Client\Credentials\StsCredential;
+use AlibabaCloud\Client\Signature\ShaHmac1Signature;
+use AlibabaCloud\Client\Signature\SignatureInterface;
+use AlibabaCloud\Client\Signature\ShaHmac256Signature;
+use AlibabaCloud\Client\Signature\BearerTokenSignature;
+use AlibabaCloud\Client\Credentials\AccessKeyCredential;
+use AlibabaCloud\Client\Credentials\CredentialsInterface;
+use AlibabaCloud\Client\Credentials\EcsRamRoleCredential;
+use AlibabaCloud\Client\Credentials\RamRoleArnCredential;
+use AlibabaCloud\Client\Credentials\RsaKeyPairCredential;
+use AlibabaCloud\Client\Credentials\BearerTokenCredential;
+use AlibabaCloud\Client\Signature\ShaHmac256WithRsaSignature;
+
+/**
+ * Custom Client.
+ *
+ * @package   AlibabaCloud\Client\Clients
+ */
+class Client
+{
+    use HttpTrait;
+    use RegionTrait;
+    use ManageTrait;
+
+    /**
+     * @var CredentialsInterface|AccessKeyCredential|BearerTokenCredential|StsCredential|EcsRamRoleCredential|RamRoleArnCredential|RsaKeyPairCredential
+     */
+    private $credential;
+
+    /**
+     * @var SignatureInterface
+     */
+    private $signature;
+
+    /**
+     * Self constructor.
+     *
+     * @param CredentialsInterface $credential
+     * @param SignatureInterface   $signature
+     */
+    public function __construct(CredentialsInterface $credential, SignatureInterface $signature)
+    {
+        $this->credential                 = $credential;
+        $this->signature                  = $signature;
+        $this->options['connect_timeout'] = Request::CONNECT_TIMEOUT;
+        $this->options['timeout']         = Request::TIMEOUT;
+        $this->options['verify']          = false;
+    }
+
+    /**
+     * @return AccessKeyCredential|BearerTokenCredential|CredentialsInterface|EcsRamRoleCredential|RamRoleArnCredential|RsaKeyPairCredential|StsCredential
+     */
+    public function getCredential()
+    {
+        return $this->credential;
+    }
+
+    /**
+     * @return SignatureInterface|BearerTokenSignature|ShaHmac1Signature|ShaHmac256Signature|ShaHmac256WithRsaSignature
+     */
+    public function getSignature()
+    {
+        return $this->signature;
+    }
+}

+ 26 - 0
vendor/alibabacloud/client/src/Clients/EcsRamRoleClient.php

xqd
@@ -0,0 +1,26 @@
+<?php
+
+namespace AlibabaCloud\Client\Clients;
+
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Signature\ShaHmac1Signature;
+use AlibabaCloud\Client\Credentials\EcsRamRoleCredential;
+
+/**
+ * Use the RAM role of an ECS instance to complete the authentication.
+ */
+class EcsRamRoleClient extends Client
+{
+    /**
+     * @param string $roleName
+     *
+     * @throws ClientException
+     */
+    public function __construct($roleName)
+    {
+        parent::__construct(
+            new EcsRamRoleCredential($roleName),
+            new ShaHmac1Signature()
+        );
+    }
+}

+ 98 - 0
vendor/alibabacloud/client/src/Clients/ManageTrait.php

xqd
@@ -0,0 +1,98 @@
+<?php
+
+namespace AlibabaCloud\Client\Clients;
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Filter\Filter;
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\Credentials\StsCredential;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+use AlibabaCloud\Client\Credentials\CredentialsInterface;
+use AlibabaCloud\Client\Credentials\EcsRamRoleCredential;
+use AlibabaCloud\Client\Credentials\RamRoleArnCredential;
+use AlibabaCloud\Client\Credentials\RsaKeyPairCredential;
+use AlibabaCloud\Client\Credentials\Providers\EcsRamRoleProvider;
+use AlibabaCloud\Client\Credentials\Providers\RamRoleArnProvider;
+use AlibabaCloud\Client\Credentials\Providers\RsaKeyPairProvider;
+use AlibabaCloud\Client\Credentials\Providers\CredentialsProvider;
+
+/**
+ * Trait ManageTrait.
+ *
+ * @mixin     Client
+ */
+trait ManageTrait
+{
+    /**
+     * @param int $timeout
+     * @param int $connectTimeout
+     *
+     * @return CredentialsInterface|StsCredential
+     *
+     * @throws ClientException
+     * @throws ServerException
+     */
+    public function getSessionCredential($timeout = Request::TIMEOUT, $connectTimeout = Request::CONNECT_TIMEOUT)
+    {
+        switch (\get_class($this->credential)) {
+            case EcsRamRoleCredential::class:
+                return (new EcsRamRoleProvider($this))->get();
+            case RamRoleArnCredential::class:
+                return (new RamRoleArnProvider($this))->get($timeout, $connectTimeout);
+            case RsaKeyPairCredential::class:
+                return (new RsaKeyPairProvider($this))->get($timeout, $connectTimeout);
+            default:
+                return $this->credential;
+        }
+    }
+
+    /**
+     * @return static
+     * @throws ClientException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function asGlobalClient()
+    {
+        return $this->asDefaultClient();
+    }
+
+    /**
+     * Set the current client as the default client.
+     *
+     * @return static
+     * @throws ClientException
+     */
+    public function asDefaultClient()
+    {
+        return $this->name(CredentialsProvider::getDefaultName());
+    }
+
+    /**
+     * Naming clients.
+     *
+     * @param string $name
+     *
+     * @return static
+     * @throws ClientException
+     */
+    public function name($name)
+    {
+        Filter::name($name);
+
+        return AlibabaCloud::set($name, $this);
+    }
+
+    /**
+     * @return bool
+     */
+    public function isDebug()
+    {
+        if (isset($this->options['debug'])) {
+            return $this->options['debug'] === true && PHP_SAPI === 'cli';
+        }
+
+        return false;
+    }
+}

+ 33 - 0
vendor/alibabacloud/client/src/Clients/RamRoleArnClient.php

xqd
@@ -0,0 +1,33 @@
+<?php
+
+namespace AlibabaCloud\Client\Clients;
+
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Signature\ShaHmac1Signature;
+use AlibabaCloud\Client\Credentials\RamRoleArnCredential;
+
+/**
+ * Use the AssumeRole of the RAM account to complete  the authentication.
+ *
+ * @package   AlibabaCloud\Client\Clients
+ */
+class RamRoleArnClient extends Client
+{
+
+    /**
+     * @param string       $accessKeyId
+     * @param string       $accessKeySecret
+     * @param string       $roleArn
+     * @param string       $roleSessionName
+     * @param string|array $policy
+     *
+     * @throws ClientException
+     */
+    public function __construct($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName, $policy = '')
+    {
+        parent::__construct(
+            new RamRoleArnCredential($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName, $policy),
+            new ShaHmac1Signature()
+        );
+    }
+}

+ 30 - 0
vendor/alibabacloud/client/src/Clients/RsaKeyPairClient.php

xqd
@@ -0,0 +1,30 @@
+<?php
+
+namespace AlibabaCloud\Client\Clients;
+
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Signature\ShaHmac1Signature;
+use AlibabaCloud\Client\Credentials\RsaKeyPairCredential;
+
+/**
+ * Use the RSA key pair to complete the authentication (supported only on Japanese site)
+ *
+ * @package   AlibabaCloud\Client\Clients
+ */
+class RsaKeyPairClient extends Client
+{
+
+    /**
+     * @param string $publicKeyId
+     * @param string $privateKeyFile
+     *
+     * @throws ClientException
+     */
+    public function __construct($publicKeyId, $privateKeyFile)
+    {
+        parent::__construct(
+            new RsaKeyPairCredential($publicKeyId, $privateKeyFile),
+            new ShaHmac1Signature()
+        );
+    }
+}

+ 28 - 0
vendor/alibabacloud/client/src/Clients/StsClient.php

xqd
@@ -0,0 +1,28 @@
+<?php
+
+namespace AlibabaCloud\Client\Clients;
+
+use AlibabaCloud\Client\Credentials\StsCredential;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Signature\ShaHmac1Signature;
+
+/**
+ * Use the STS Token to complete the authentication.
+ */
+class StsClient extends Client
+{
+    /**
+     * @param string $accessKeyId     Access key ID
+     * @param string $accessKeySecret Access Key Secret
+     * @param string $securityToken   Security Token
+     *
+     * @throws ClientException
+     */
+    public function __construct($accessKeyId, $accessKeySecret, $securityToken = '')
+    {
+        parent::__construct(
+            new StsCredential($accessKeyId, $accessKeySecret, $securityToken),
+            new ShaHmac1Signature()
+        );
+    }
+}

+ 62 - 0
vendor/alibabacloud/client/src/Config/Config.php

xqd
@@ -0,0 +1,62 @@
+<?php
+
+namespace AlibabaCloud\Client\Config;
+
+use Exception;
+use clagiordano\weblibs\configmanager\ConfigManager;
+
+/**
+ * Class Config
+ *
+ * @package   AlibabaCloud\Client\Config
+ */
+class Config
+{
+
+    /**
+     * @var ConfigManager|null
+     */
+    private static $configManager;
+
+    /**
+     * @param string      $configPath
+     *
+     * @param string|null $defaultValue
+     *
+     * @return mixed
+     */
+    public static function get($configPath, $defaultValue = null)
+    {
+        return self::getConfigManager()
+                   ->getValue(
+                       \strtolower($configPath),
+                       $defaultValue
+                   );
+    }
+
+    /**
+     * @return ConfigManager
+     */
+    private static function getConfigManager()
+    {
+        if (!self::$configManager instanceof ConfigManager) {
+            self::$configManager = new ConfigManager(__DIR__ . DIRECTORY_SEPARATOR . 'Data.php');
+        }
+
+        return self::$configManager;
+    }
+
+    /**
+     * @param string $configPath
+     * @param mixed  $newValue
+     *
+     * @return ConfigManager
+     * @throws Exception
+     */
+    public static function set($configPath, $newValue)
+    {
+        self::getConfigManager()->setValue(\strtolower($configPath), $newValue);
+
+        return self::getConfigManager()->saveConfigFile();
+    }
+}

+ 3800 - 0
vendor/alibabacloud/client/src/Config/Data.php

xqd
@@ -0,0 +1,3800 @@
+<?php
+
+return [
+    'endpoints' =>
+        [
+            'dysmsapi'        =>
+                [
+                    'cn-hangzhou'    => 'dysmsapi.aliyuncs.com',
+                    'ap-southeast-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com',
+                ],
+            'ccc'             =>
+                [
+                    'global'      => 'ccc.cn-shanghai.aliyuncs.com',
+                    'cn-shanghai' => 'ccc.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou' => 'ccc.cn-hangzhou.aliyuncs.com',
+                ],
+            'dbs'             =>
+                [
+                    'cn-hangzhou'    => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao'     => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'     => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'    => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'    => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1' => 'dbs-api.ap-southeast-1.aliyuncs.com',
+                    'ap-northeast-1' => 'dbs-api.ap-northeast-1.aliyuncs.com',
+                ],
+            'dybaseapi'       =>
+                [
+                    'global'      => 'dybaseapi.aliyuncs.com',
+                    'cn-hangzhou' => 'dybaseapi.aliyuncs.com',
+                ],
+            'dyiotapi'        =>
+                [
+                    'global'      => 'dyiotapi.aliyuncs.com',
+                    'cn-hangzhou' => 'dyiotapi.aliyuncs.com',
+                ],
+            'dycdpapi'        =>
+                [
+                    'global'      => 'dycdpapi.aliyuncs.com',
+                    'cn-hangzhou' => 'dycdpapi.aliyuncs.com',
+                ],
+            'dyplsapi'        =>
+                [
+                    'global'      => 'dyplsapi.aliyuncs.com',
+                    'cn-hangzhou' => 'dyplsapi.aliyuncs.com',
+                ],
+            'dypnsapi'        =>
+                [
+                    'global'      => 'dypnsapi.aliyuncs.com',
+                    'cn-hangzhou' => 'dypnsapi.aliyuncs.com',
+                ],
+            'dyvmsapi'        =>
+                [
+                    'global'      => 'dyvmsapi.aliyuncs.com',
+                    'cn-hangzhou' => 'dyvmsapi.aliyuncs.com',
+                ],
+            'snsuapi'         =>
+                [
+                    'global'      => 'snsuapi.aliyuncs.com',
+                    'cn-hangzhou' => 'snsuapi.aliyuncs.com',
+                ],
+            'ecs'             =>
+                [
+                    'jp-fudao-1'                  => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'me-east-1'                   => 'ecs.me-east-1.aliyuncs.com',
+                    'us-east-1'                   => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'ap-northeast-1'              => 'ecs.ap-northeast-1.aliyuncs.com',
+                    'cn-hangzhou-bj-b01'          => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'                 => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-nu16-b01'         => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-am13-c01'         => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'in-west-antgroup-1'          => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-guizhou-gov'              => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'in-west-antgroup-2'          => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao-cm9'              => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'tw-snowcloud-kaohsiung'      => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-finance-1'       => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-guizhou'                  => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'                 => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-inner'           => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-fujian'                   => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'in-mumbai-alipay'            => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'us-west-1'                   => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-inner'           => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-anhui-gov-1'              => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou'                 => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'            => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-haidian-cm12-c01'         => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-anhui-gov'                => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'                 => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-2'              => 'ecs.ap-southeast-2.aliyuncs.com',
+                    'cn-qingdao'                  => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-su18-b02'        => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-su18-b03'        => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-su18-b01'        => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-antgroup-1'     => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-henan-am12001'            => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'                  => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-d'               => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-gansu-am6'                => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-ningxiazhongwei'          => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01'         => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-ningxia-am7-c01'          => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-finance-1'       => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'              => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-st4-d01'         => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'eu-central-1'                => 'ecs.eu-central-1.aliyuncs.com',
+                    'cn-zhangjiakou'              => 'ecs.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'                => 'ecs.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-3'              => 'ecs.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'              => 'ecs.ap-southeast-5.aliyuncs.com',
+                    'eu-west-1'                   => 'ecs.eu-west-1.aliyuncs.com',
+                    'ap-south-1'                  => 'ecs.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'                  => 'ecs.cn-chengdu.aliyuncs.com',
+                    'cn-north-2-gov-1'            => 'ecs.aliyuncs.com',
+                    'cn-edge-1'                   => 'ecs.cn-qingdao-nebula.aliyuncs.com',
+                    'cn-hangzhou-internal-prod-1' => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-internal-test-1' => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-internal-test-2' => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-internal-test-3' => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-huhehaote-nebula-1'       => 'ecs.cn-qingdao-nebula.aliyuncs.com',
+                    'cn-qingdao-nebula'           => 'ecs.cn-qingdao-nebula.aliyuncs.com',
+                    'cn-shanghai-internal-test-1' => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-zhangbei-na61-b01'        => 'ecs-cn-hangzhou.aliyuncs.com',
+                    'cn-zhengzhou-nebula-1'       => 'ecs.cn-qingdao-nebula.aliyuncs.com',
+                    'eu-west-1-oxs'               => 'ecs.cn-shenzhen-cloudstone.aliyuncs.com',
+                    'cn-heyuan'                   => 'ecs.cn-heyuan.aliyuncs.com',
+                    'cn-wulanchabu'               => 'ecs.cn-wulanchabu.aliyuncs.com',
+                ],
+            'rds'             =>
+                [
+                    'me-east-1'             => 'rds.me-east-1.aliyuncs.com',
+                    'us-east-1'             => 'rds.aliyuncs.com',
+                    'ap-northeast-1'        => 'rds.ap-northeast-1.aliyuncs.com',
+                    'cn-hongkong'           => 'rds.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'rds.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'rds.aliyuncs.com',
+                    'cn-beijing-gov-1'      => 'rds.aliyuncs.com',
+                    'cn-shanghai'           => 'rds.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'rds.aliyuncs.com',
+                    'cn-fujian'             => 'rds.aliyuncs.com',
+                    'us-west-1'             => 'rds.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'rds.aliyuncs.com',
+                    'cn-hangzhou'           => 'rds.aliyuncs.com',
+                    'cn-beijing-inner'      => 'rds.aliyuncs.com',
+                    'cn-haidian-cm12-c01'   => 'rds.aliyuncs.com',
+                    'cn-shenzhen'           => 'rds.aliyuncs.com',
+                    'ap-southeast-2'        => 'rds.ap-southeast-2.aliyuncs.com',
+                    'cn-qingdao'            => 'rds.aliyuncs.com',
+                    'cn-beijing'            => 'rds.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'rds.aliyuncs.com',
+                    'cn-gansu-am6'          => 'rds.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'rds.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'rds.aliyuncs.com',
+                    'ap-southeast-1'        => 'rds.aliyuncs.com',
+                    'eu-central-1'          => 'rds.eu-central-1.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'rds.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'rds.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-3'        => 'rds.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'rds.ap-southeast-5.aliyuncs.com',
+                    'eu-west-1'             => 'rds.eu-west-1.aliyuncs.com',
+                    'ap-south-1'            => 'rds.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'            => 'rds.cn-chengdu.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'rds.aliyuncs.com',
+                    'cn-yushanfang'         => 'rds.aliyuncs.com',
+                    'cn-huhehaote-nebula-1' => 'rds.cn-chengdu.aliyuncs.com',
+                    'cn-heyuan'             => 'rds.aliyuncs.com',
+                ],
+            'vpc'             =>
+                [
+                    'me-east-1'                   => 'vpc.me-east-1.aliyuncs.com',
+                    'us-east-1'                   => 'vpc.aliyuncs.com',
+                    'ap-northeast-1'              => 'vpc.ap-northeast-1.aliyuncs.com',
+                    'cn-hongkong'                 => 'vpc.aliyuncs.com',
+                    'cn-beijing-am13-c01'         => 'vpc.aliyuncs.com',
+                    'cn-guizhou-gov'              => 'vpc.aliyuncs.com',
+                    'cn-shanghai-finance-1'       => 'vpc.aliyuncs.com',
+                    'cn-guizhou'                  => 'vpc.aliyuncs.com',
+                    'cn-shanghai'                 => 'vpc.aliyuncs.com',
+                    'us-west-1'                   => 'vpc.aliyuncs.com',
+                    'cn-hangzhou'                 => 'vpc.aliyuncs.com',
+                    'cn-haidian-cm12-c01'         => 'vpc.aliyuncs.com',
+                    'cn-anhui-gov'                => 'vpc.aliyuncs.com',
+                    'cn-shenzhen'                 => 'vpc.aliyuncs.com',
+                    'ap-southeast-2'              => 'vpc.ap-southeast-2.aliyuncs.com',
+                    'cn-henan-am12001'            => 'vpc.aliyuncs.com',
+                    'cn-beijing'                  => 'vpc.aliyuncs.com',
+                    'cn-gansu-am6'                => 'vpc.aliyuncs.com',
+                    'cn-ningxiazhongwei'          => 'vpc.aliyuncs.com',
+                    'cn-ningxia-am7-c01'          => 'vpc.aliyuncs.com',
+                    'cn-shenzhen-finance-1'       => 'vpc.aliyuncs.com',
+                    'ap-southeast-1'              => 'vpc.aliyuncs.com',
+                    'eu-central-1'                => 'vpc.eu-central-1.aliyuncs.com',
+                    'cn-zhangjiakou'              => 'vpc.cn-zhangjiakou.aliyuncs.com',
+                    'cn-qingdao'                  => 'vpc.aliyuncs.com',
+                    'cn-huhehaote'                => 'vpc.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-3'              => 'vpc.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'              => 'vpc.ap-southeast-5.aliyuncs.com',
+                    'eu-west-1'                   => 'vpc.eu-west-1.aliyuncs.com',
+                    'ap-south-1'                  => 'vpc.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'                  => 'vpc.cn-chengdu.aliyuncs.com',
+                    'cn-north-2-gov-1'            => 'vpc.aliyuncs.com',
+                    'ap-northeast-2-pop'          => 'vpc.aliyuncs.com',
+                    'cn-beijing-finance-1'        => 'vpc.aliyuncs.com',
+                    'cn-beijing-finance-pop'      => 'vpc.aliyuncs.com',
+                    'cn-edge-1'                   => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com',
+                    'cn-hangzhou-internal-test-1' => 'vpc.aliyuncs.com',
+                    'cn-hangzhou-internal-test-2' => 'vpc.aliyuncs.com',
+                    'cn-hangzhou-internal-test-3' => 'vpc.aliyuncs.com',
+                    'cn-hongkong-finance-pop'     => 'vpc.aliyuncs.com',
+                    'cn-huhehaote-nebula-1'       => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com',
+                    'cn-qingdao-nebula'           => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com',
+                    'cn-shanghai-et15-b01'        => 'vpc.aliyuncs.com',
+                    'cn-wuhan'                    => 'vpc.aliyuncs.com',
+                    'cn-zhangbei-na61-b01'        => 'vpc.aliyuncs.com',
+                    'cn-zhengzhou-nebula-1'       => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com',
+                    'eu-west-1-oxs'               => 'vpc-nebula.cn-shenzhen-cloudstone.aliyuncs.com',
+                    'rus-west-1-pop'              => 'vpc.aliyuncs.com',
+                    'cn-heyuan'                   => 'vpc.cn-heyuan.aliyuncs.com',
+                    'cn-wulanchabu'               => 'vpc.cn-wulanchabu.aliyuncs.com',
+                ],
+            'kms'             =>
+                [
+                    'me-east-1'                   => 'kms.me-east-1.aliyuncs.com',
+                    'ap-northeast-1'              => 'kms.ap-northeast-1.aliyuncs.com',
+                    'cn-hongkong'                 => 'kms.cn-hongkong.aliyuncs.com',
+                    'cn-shanghai-finance-1'       => 'kms.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shanghai'                 => 'kms.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'                 => 'kms.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'                 => 'kms.cn-shenzhen.aliyuncs.com',
+                    'ap-southeast-2'              => 'kms.ap-southeast-2.aliyuncs.com',
+                    'cn-beijing'                  => 'kms.cn-beijing.aliyuncs.com',
+                    'cn-shenzhen-finance-1'       => 'kms.cn-shenzhen-finance-1.aliyuncs.com',
+                    'ap-southeast-1'              => 'kms.ap-southeast-1.aliyuncs.com',
+                    'eu-central-1'                => 'kms.eu-central-1.aliyuncs.com',
+                    'cn-qingdao'                  => 'kms.cn-qingdao.aliyuncs.com',
+                    'cn-zhangjiakou'              => 'kms.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'                => 'kms.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-3'              => 'kms.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'              => 'kms.ap-southeast-5.aliyuncs.com',
+                    'eu-west-1'                   => 'kms.eu-west-1.aliyuncs.com',
+                    'us-west-1'                   => 'kms.us-west-1.aliyuncs.com',
+                    'us-east-1'                   => 'kms.us-east-1.aliyuncs.com',
+                    'ap-south-1'                  => 'kms.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'                  => 'kms.cn-chengdu.aliyuncs.com',
+                    'cn-hangzhou-finance'         => 'kms.cn-hangzhou-finance.aliyuncs.com',
+                    'cn-north-2-gov-1'            => 'kms.cn-north-2-gov-1.aliyuncs.com',
+                    'cn-hangzhou-internal-test-1' => 'kms.cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-internal-test-2' => 'kms.cn-hangzhou.aliyuncs.com',
+                    'cn-heyuan'                   => 'kms.cn-heyuan.aliyuncs.com',
+                    'cn-wulanchabu'               => 'kms.cn-wulanchabu.aliyuncs.com',
+                ],
+            'cms'             =>
+                [
+                    'me-east-1'             => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'us-east-1'             => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'ap-northeast-1'        => 'metrics.ap-northeast-1.aliyuncs.com',
+                    'cn-hongkong'           => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'metrics.aliyuncs.com',
+                    'cn-shanghai'           => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'metrics.aliyuncs.com',
+                    'us-west-1'             => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'metrics.aliyuncs.com',
+                    'cn-hangzhou'           => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'      => 'metrics.aliyuncs.com',
+                    'cn-shenzhen'           => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-2'        => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao'            => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'            => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'metrics.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'metrics.aliyuncs.com',
+                    'ap-southeast-1'        => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'eu-central-1'          => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'metrics.cn-hangzhou.aliyuncs.com',
+                    'cn-huhehaote'          => 'metrics.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-3'        => 'metrics.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'metrics.ap-southeast-5.aliyuncs.com',
+                    'eu-west-1'             => 'metrics.eu-west-1.aliyuncs.com',
+                    'ap-south-1'            => 'metrics.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'            => 'metrics.cn-chengdu.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'metrics.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'metrics.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'metrics.cn-north-2-gov-1.aliyuncs.com',
+                    'cn-qingdao-nebula'     => 'metrics.cn-qingdao-nebula.aliyuncs.com',
+                    'cn-heyuan'             => 'metrics.cn-heyuan.aliyuncs.com',
+                    'cn-wulanchabu'         => 'metrics.cn-wulanchabu.aliyuncs.com',
+                ],
+            'slb'             =>
+                [
+                    'me-east-1'             => 'slb.me-east-1.aliyuncs.com',
+                    'us-east-1'             => 'slb.aliyuncs.com',
+                    'ap-northeast-1'        => 'slb.ap-northeast-1.aliyuncs.com',
+                    'cn-hongkong'           => 'slb.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'slb.aliyuncs.com',
+                    'cn-shanghai'           => 'slb.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'slb.aliyuncs.com',
+                    'us-west-1'             => 'slb.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'slb.aliyuncs.com',
+                    'cn-hangzhou'           => 'slb.aliyuncs.com',
+                    'cn-beijing-inner'      => 'slb.aliyuncs.com',
+                    'cn-shenzhen'           => 'slb.aliyuncs.com',
+                    'ap-southeast-2'        => 'slb.ap-southeast-2.aliyuncs.com',
+                    'cn-qingdao'            => 'slb.aliyuncs.com',
+                    'cn-beijing'            => 'slb.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'slb.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'slb.aliyuncs.com',
+                    'ap-southeast-1'        => 'slb.aliyuncs.com',
+                    'eu-central-1'          => 'slb.eu-central-1.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'slb.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'slb.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-3'        => 'slb.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'slb.ap-southeast-5.aliyuncs.com',
+                    'eu-west-1'             => 'slb.eu-west-1.aliyuncs.com',
+                    'ap-south-1'            => 'slb.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'            => 'slb.cn-chengdu.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'slb.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'slb.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'slb.aliyuncs.com',
+                    'cn-fujian'             => 'slb.aliyuncs.com',
+                    'cn-haidian-cm12-c01'   => 'slb.aliyuncs.com',
+                    'cn-hangzhou-test-306'  => 'slb.aliyuncs.com',
+                    'cn-huhehaote-nebula-1' => 'slb-api.cn-qingdao-nebula.aliyuncs.com',
+                    'cn-heyuan'             => 'slb.cn-heyuan.aliyuncs.com',
+                    'cn-wulanchabu'         => 'slb.cn-wulanchabu.aliyuncs.com',
+                ],
+            'cs'              =>
+                [
+                    'us-east-1'             => 'cs.us-east-1.aliyuncs.com',
+                    'cn-hongkong'           => 'cs.cn-hongkong.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'cs.aliyuncs.com',
+                    'cn-shanghai'           => 'cs.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'cs.aliyuncs.com',
+                    'us-west-1'             => 'cs.us-west-1.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'cs.aliyuncs.com',
+                    'cn-hangzhou'           => 'cs.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'      => 'cs.aliyuncs.com',
+                    'cn-shenzhen'           => 'cs.cn-shenzhen.aliyuncs.com',
+                    'cn-qingdao'            => 'cs.aliyuncs.com',
+                    'cn-beijing'            => 'cs.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'cs.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'cs.aliyuncs.com',
+                    'ap-southeast-1'        => 'cs.ap-southeast-1.aliyuncs.com',
+                    'cn-chengdu'            => 'cs.cn-chengdu.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'cs.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'cs.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-2'        => 'cs.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'cs.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'cs.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'        => 'cs.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'cs.eu-west-1.aliyuncs.com',
+                    'eu-central-1'          => 'cs.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'cs.me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'cs.ap-south-1.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'cs.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'cs.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'cs.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'push'            =>
+                [
+                    'us-east-1'           => 'cloudpush.aliyuncs.com',
+                    'cn-hongkong'         => 'cloudpush.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'cloudpush.aliyuncs.com',
+                    'cn-shanghai'         => 'cloudpush.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'cloudpush.aliyuncs.com',
+                    'us-west-1'           => 'cloudpush.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'cloudpush.aliyuncs.com',
+                    'cn-hangzhou'         => 'cloudpush.aliyuncs.com',
+                    'cn-beijing-inner'    => 'cloudpush.aliyuncs.com',
+                    'cn-shenzhen'         => 'cloudpush.aliyuncs.com',
+                    'cn-qingdao'          => 'cloudpush.aliyuncs.com',
+                    'cn-beijing'          => 'cloudpush.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'cloudpush.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'cloudpush.aliyuncs.com',
+                    'ap-southeast-1'      => 'cloudpush.aliyuncs.com',
+                ],
+            'cos'             =>
+                [
+                    'us-east-1'           => 'cos.aliyuncs.com',
+                    'cn-hongkong'         => 'cos.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'cos.aliyuncs.com',
+                    'cn-shanghai'         => 'cos.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'cos.aliyuncs.com',
+                    'us-west-1'           => 'cos.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'cos.aliyuncs.com',
+                    'cn-hangzhou'         => 'cos.aliyuncs.com',
+                    'cn-beijing-inner'    => 'cos.aliyuncs.com',
+                    'cn-shenzhen'         => 'cos.aliyuncs.com',
+                    'cn-qingdao'          => 'cos.aliyuncs.com',
+                    'cn-beijing'          => 'cos.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'cos.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'cos.aliyuncs.com',
+                    'ap-southeast-1'      => 'cos.aliyuncs.com',
+                ],
+            'ess'             =>
+                [
+                    'us-east-1'             => 'ess.aliyuncs.com',
+                    'cn-hongkong'           => 'ess.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'ess.aliyuncs.com',
+                    'cn-shanghai'           => 'ess.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'ess.aliyuncs.com',
+                    'us-west-1'             => 'ess.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'ess.aliyuncs.com',
+                    'cn-hangzhou'           => 'ess.aliyuncs.com',
+                    'cn-beijing-inner'      => 'ess.aliyuncs.com',
+                    'cn-shenzhen'           => 'ess.aliyuncs.com',
+                    'cn-qingdao'            => 'ess.aliyuncs.com',
+                    'cn-beijing'            => 'ess.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'ess.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'ess.aliyuncs.com',
+                    'ap-southeast-1'        => 'ess.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'ess.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'ess.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-2'        => 'ess.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'ess.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'ess.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'        => 'ess.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'ess.eu-west-1.aliyuncs.com',
+                    'eu-central-1'          => 'ess.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'ess.me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'ess.ap-south-1.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'ess.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'ess.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'ess.aliyuncs.com',
+                    'cn-chengdu'            => 'ess.cn-chengdu.aliyuncs.com',
+                    'cn-haidian-cm12-c01'   => 'ess.aliyuncs.com',
+                    'cn-heyuan'             => 'ess.cn-heyuan.aliyuncs.com',
+                    'cn-wulanchabu'         => 'ess.cn-wulanchabu.aliyuncs.com',
+                ],
+            'ace-ops'         =>
+                [
+                    'us-east-1'           => 'ace-ops.cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'         => 'ace-ops.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'         => 'ace-ops.cn-hangzhou.aliyuncs.com',
+                    'us-west-1'           => 'ace-ops.cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou'         => 'ace-ops.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'         => 'ace-ops.cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao'          => 'ace-ops.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'          => 'ace-ops.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'ace-ops.cn-hangzhou.aliyuncs.com',
+                ],
+            'billing'         =>
+                [
+                    'us-east-1'           => 'billing.aliyuncs.com',
+                    'cn-hongkong'         => 'billing.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'billing.aliyuncs.com',
+                    'cn-shanghai'         => 'billing.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'billing.aliyuncs.com',
+                    'us-west-1'           => 'billing.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'billing.aliyuncs.com',
+                    'cn-hangzhou'         => 'billing.aliyuncs.com',
+                    'cn-beijing-inner'    => 'billing.aliyuncs.com',
+                    'cn-beijing'          => 'billing.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'billing.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'billing.aliyuncs.com',
+                    'ap-southeast-1'      => 'billing.aliyuncs.com',
+                ],
+            'dqs'             =>
+                [
+                    'us-east-1'           => 'dqs.aliyuncs.com',
+                    'cn-hongkong'         => 'dqs.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'dqs.aliyuncs.com',
+                    'cn-shanghai'         => 'dqs.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'dqs.aliyuncs.com',
+                    'us-west-1'           => 'dqs.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'dqs.aliyuncs.com',
+                    'cn-hangzhou'         => 'dqs.aliyuncs.com',
+                    'cn-beijing-inner'    => 'dqs.aliyuncs.com',
+                    'cn-shenzhen'         => 'dqs.aliyuncs.com',
+                    'cn-qingdao'          => 'dqs.aliyuncs.com',
+                    'cn-beijing'          => 'dqs.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'dqs.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'dqs.aliyuncs.com',
+                    'ap-southeast-1'      => 'dqs.aliyuncs.com',
+                ],
+            'dds'             =>
+                [
+                    'us-east-1'             => 'mongodb.aliyuncs.com',
+                    'cn-hongkong'           => 'mongodb.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'mongodb.aliyuncs.com',
+                    'cn-shanghai'           => 'mongodb.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'mongodb.aliyuncs.com',
+                    'us-west-1'             => 'mongodb.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'mongodb.aliyuncs.com',
+                    'cn-hangzhou'           => 'mongodb.aliyuncs.com',
+                    'cn-beijing-inner'      => 'mongodb.aliyuncs.com',
+                    'cn-shenzhen'           => 'mongodb.aliyuncs.com',
+                    'cn-qingdao'            => 'mongodb.aliyuncs.com',
+                    'cn-beijing'            => 'mongodb.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'mongodb.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'mongodb.aliyuncs.com',
+                    'ap-southeast-1'        => 'mongodb.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'mongodb.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'mongodb.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-2'        => 'mongodb.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'mongodb.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'mongodb.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'        => 'mongodb.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'mongodb.eu-west-1.aliyuncs.com',
+                    'eu-central-1'          => 'mongodb.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'mongodb.me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'mongodb.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'            => 'mongodb.cn-chengdu.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'mongodb.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'mongodb.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'mongodb.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'mongodb.aliyuncs.com',
+                    'cn-heyuan'             => 'mongodb.aliyuncs.com',
+                    'cn-wulanchabu'         => 'mongodb.aliyuncs.com',
+                ],
+            'emr'             =>
+                [
+                    'us-east-1'             => 'emr.us-east-1.aliyuncs.com',
+                    'cn-hongkong'           => 'emr.cn-hongkong.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'emr.aliyuncs.com',
+                    'cn-shanghai'           => 'emr.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'emr.aliyuncs.com',
+                    'us-west-1'             => 'emr.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'emr.aliyuncs.com',
+                    'cn-hangzhou'           => 'emr.aliyuncs.com',
+                    'cn-beijing-inner'      => 'emr.aliyuncs.com',
+                    'cn-shenzhen'           => 'emr.aliyuncs.com',
+                    'cn-qingdao'            => 'emr.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'emr.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'emr.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'emr.aliyuncs.com',
+                    'ap-southeast-1'        => 'emr.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'emr.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'emr.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-2'        => 'emr.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'emr.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'emr.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'        => 'emr.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'emr.eu-west-1.aliyuncs.com',
+                    'eu-central-1'          => 'emr.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'emr.me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'emr.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'            => 'emr.cn-chengdu.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'emr.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'emr.aliyuncs.com',
+                ],
+            'sms'             =>
+                [
+                    'us-east-1'           => 'sms.aliyuncs.com',
+                    'cn-hongkong'         => 'sms.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'sms.aliyuncs.com',
+                    'cn-shanghai'         => 'sms.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'sms.aliyuncs.com',
+                    'us-west-1'           => 'sms.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'sms.aliyuncs.com',
+                    'cn-hangzhou'         => 'sms.aliyuncs.com',
+                    'cn-beijing-inner'    => 'sms.aliyuncs.com',
+                    'cn-shenzhen'         => 'sms.aliyuncs.com',
+                    'cn-qingdao'          => 'sms.aliyuncs.com',
+                    'cn-beijing'          => 'sms.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'sms.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'sms.aliyuncs.com',
+                    'ap-southeast-1'      => 'sms.aliyuncs.com',
+                ],
+            'jaq'             =>
+                [
+                    'us-east-1'           => 'jaq.aliyuncs.com',
+                    'cn-hongkong'         => 'jaq.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'jaq.aliyuncs.com',
+                    'cn-shanghai'         => 'jaq.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'jaq.aliyuncs.com',
+                    'us-west-1'           => 'jaq.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'jaq.aliyuncs.com',
+                    'cn-hangzhou'         => 'jaq.aliyuncs.com',
+                    'cn-beijing-inner'    => 'jaq.aliyuncs.com',
+                    'cn-shenzhen'         => 'jaq.aliyuncs.com',
+                    'cn-qingdao'          => 'jaq.aliyuncs.com',
+                    'cn-beijing'          => 'jaq.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'jaq.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'jaq.aliyuncs.com',
+                    'ap-southeast-1'      => 'jaq.aliyuncs.com',
+                ],
+            'hpc'             =>
+                [
+                    'us-east-1'           => 'hpc.aliyuncs.com',
+                    'cn-hongkong'         => 'hpc.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'hpc.aliyuncs.com',
+                    'cn-shanghai'         => 'hpc.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'hpc.aliyuncs.com',
+                    'us-west-1'           => 'hpc.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'hpc.aliyuncs.com',
+                    'cn-hangzhou'         => 'hpc.aliyuncs.com',
+                    'cn-beijing-inner'    => 'hpc.aliyuncs.com',
+                    'cn-shenzhen'         => 'hpc.aliyuncs.com',
+                    'cn-qingdao'          => 'hpc.aliyuncs.com',
+                    'cn-beijing'          => 'hpc.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'hpc.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'hpc.aliyuncs.com',
+                    'ap-southeast-1'      => 'hpc.aliyuncs.com',
+                ],
+            'location'        =>
+                [
+                    'us-east-1'           => 'location.aliyuncs.com',
+                    'cn-hongkong'         => 'location.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'location.aliyuncs.com',
+                    'cn-shanghai'         => 'location.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'location.aliyuncs.com',
+                    'us-west-1'           => 'location.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'location.aliyuncs.com',
+                    'cn-hangzhou'         => 'location.aliyuncs.com',
+                    'cn-beijing-inner'    => 'location.aliyuncs.com',
+                    'cn-shenzhen'         => 'location.aliyuncs.com',
+                    'cn-qingdao'          => 'location.aliyuncs.com',
+                    'cn-beijing'          => 'location.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'location.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'location.aliyuncs.com',
+                    'ap-southeast-1'      => 'location.aliyuncs.com',
+                ],
+            'chargingservice' =>
+                [
+                    'us-east-1'           => 'chargingservice.aliyuncs.com',
+                    'cn-hongkong'         => 'chargingservice.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'chargingservice.aliyuncs.com',
+                    'cn-shanghai'         => 'chargingservice.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'chargingservice.aliyuncs.com',
+                    'us-west-1'           => 'chargingservice.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'chargingservice.aliyuncs.com',
+                    'cn-hangzhou'         => 'chargingservice.aliyuncs.com',
+                    'cn-beijing-inner'    => 'chargingservice.aliyuncs.com',
+                    'cn-beijing'          => 'chargingservice.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'chargingservice.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'chargingservice.aliyuncs.com',
+                    'ap-southeast-1'      => 'chargingservice.aliyuncs.com',
+                ],
+            'msg'             =>
+                [
+                    'us-east-1'           => 'msg-inner.aliyuncs.com',
+                    'cn-hongkong'         => 'msg-inner.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'msg-inner.aliyuncs.com',
+                    'cn-shanghai'         => 'msg-inner.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'msg-inner.aliyuncs.com',
+                    'us-west-1'           => 'msg-inner.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'msg-inner.aliyuncs.com',
+                    'cn-hangzhou'         => 'msg-inner.aliyuncs.com',
+                    'cn-beijing-inner'    => 'msg-inner.aliyuncs.com',
+                    'cn-beijing'          => 'msg-inner.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'msg-inner.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'msg-inner.aliyuncs.com',
+                    'ap-southeast-1'      => 'msg-inner.aliyuncs.com',
+                ],
+            'commondriver'    =>
+                [
+                    'us-east-1'           => 'common.driver.aliyuncs.com',
+                    'cn-hongkong'         => 'common.driver.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'common.driver.aliyuncs.com',
+                    'cn-shanghai'         => 'common.driver.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'common.driver.aliyuncs.com',
+                    'us-west-1'           => 'common.driver.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'common.driver.aliyuncs.com',
+                    'cn-hangzhou'         => 'common.driver.aliyuncs.com',
+                    'cn-beijing-inner'    => 'common.driver.aliyuncs.com',
+                    'cn-shenzhen'         => 'common.driver.aliyuncs.com',
+                    'cn-qingdao'          => 'common.driver.aliyuncs.com',
+                    'cn-beijing'          => 'common.driver.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'common.driver.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'common.driver.aliyuncs.com',
+                    'ap-southeast-1'      => 'common.driver.aliyuncs.com',
+                ],
+            'r-kvstore'       =>
+                [
+                    'us-east-1'           => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'         => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'         => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'us-west-1'           => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou'         => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'    => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'         => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao'          => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'          => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'      => 'r-kvstore-cn-hangzhou.aliyuncs.com',
+                ],
+            'bss'             =>
+                [
+                    'us-east-1'           => 'bss.aliyuncs.com',
+                    'cn-hongkong'         => 'bss.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'bss.aliyuncs.com',
+                    'cn-shanghai'         => 'bss.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'bss.aliyuncs.com',
+                    'us-west-1'           => 'bss.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'bss.aliyuncs.com',
+                    'cn-hangzhou'         => 'bss.aliyuncs.com',
+                    'cn-beijing-inner'    => 'bss.aliyuncs.com',
+                    'cn-shenzhen'         => 'bss.aliyuncs.com',
+                    'cn-qingdao'          => 'bss.aliyuncs.com',
+                    'cn-beijing'          => 'bss.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'bss.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'bss.aliyuncs.com',
+                    'ap-southeast-1'      => 'bss.aliyuncs.com',
+                ],
+            'workorder'       =>
+                [
+                    'us-east-1'           => 'workorder.aliyuncs.com',
+                    'cn-hongkong'         => 'workorder.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'workorder.aliyuncs.com',
+                    'cn-shanghai'         => 'workorder.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'workorder.aliyuncs.com',
+                    'us-west-1'           => 'workorder.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'workorder.aliyuncs.com',
+                    'cn-hangzhou'         => 'workorder.aliyuncs.com',
+                    'cn-beijing-inner'    => 'workorder.aliyuncs.com',
+                    'cn-beijing'          => 'workorder.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'workorder.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'workorder.aliyuncs.com',
+                    'ap-southeast-1'      => 'workorder.aliyuncs.com',
+                ],
+            'ocs'             =>
+                [
+                    'us-east-1'           => 'm-kvstore.aliyuncs.com',
+                    'cn-hongkong'         => 'm-kvstore.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'm-kvstore.aliyuncs.com',
+                    'cn-shanghai'         => 'm-kvstore.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'm-kvstore.aliyuncs.com',
+                    'us-west-1'           => 'm-kvstore.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'm-kvstore.aliyuncs.com',
+                    'cn-hangzhou'         => 'm-kvstore.aliyuncs.com',
+                    'cn-beijing-inner'    => 'm-kvstore.aliyuncs.com',
+                    'cn-shenzhen'         => 'm-kvstore.aliyuncs.com',
+                    'cn-qingdao'          => 'm-kvstore.aliyuncs.com',
+                    'cn-beijing'          => 'm-kvstore.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'm-kvstore.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'm-kvstore.aliyuncs.com',
+                    'ap-southeast-1'      => 'm-kvstore.aliyuncs.com',
+                ],
+            'yundun'          =>
+                [
+                    'us-east-1'           => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'         => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'         => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'us-west-1'           => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou'         => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'    => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'         => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao'          => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'          => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'yundun-cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'      => 'yundun-cn-hangzhou.aliyuncs.com',
+                ],
+            'ubsms-inner'     =>
+                [
+                    'us-east-1'           => 'ubsms-inner.aliyuncs.com',
+                    'cn-hongkong'         => 'ubsms-inner.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'ubsms-inner.aliyuncs.com',
+                    'cn-shanghai'         => 'ubsms-inner.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'ubsms-inner.aliyuncs.com',
+                    'us-west-1'           => 'ubsms-inner.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'ubsms-inner.aliyuncs.com',
+                    'cn-hangzhou'         => 'ubsms-inner.aliyuncs.com',
+                    'cn-beijing-inner'    => 'ubsms-inner.aliyuncs.com',
+                    'cn-shenzhen'         => 'ubsms-inner.aliyuncs.com',
+                    'cn-qingdao'          => 'ubsms-inner.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'          => 'ubsms-inner.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'ubsms-inner.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'ubsms-inner.aliyuncs.com',
+                    'ap-southeast-1'      => 'ubsms-inner.aliyuncs.com',
+                ],
+            'dm'              =>
+                [
+                    'us-east-1'           => 'dm.aliyuncs.com',
+                    'cn-hongkong'         => 'dm.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'dm.aliyuncs.com',
+                    'cn-shanghai'         => 'dm.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'dm.aliyuncs.com',
+                    'us-west-1'           => 'dm.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'dm.aliyuncs.com',
+                    'cn-hangzhou'         => 'dm.aliyuncs.com',
+                    'cn-beijing-inner'    => 'dm.aliyuncs.com',
+                    'cn-shenzhen'         => 'dm.aliyuncs.com',
+                    'cn-qingdao'          => 'dm.aliyuncs.com',
+                    'cn-beijing'          => 'dm.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'dm.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'dm.aliyuncs.com',
+                    'ap-southeast-1'      => 'dm.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'      => 'dm.ap-southeast-2.aliyuncs.com',
+                ],
+            'green'           =>
+                [
+                    'us-east-1'           => 'green.aliyuncs.com',
+                    'cn-hongkong'         => 'green.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'green.aliyuncs.com',
+                    'cn-shanghai'         => 'green.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'green.aliyuncs.com',
+                    'us-west-1'           => 'green.us-west-1.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'green.aliyuncs.com',
+                    'cn-hangzhou'         => 'green.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'    => 'green.aliyuncs.com',
+                    'cn-shenzhen'         => 'green.cn-shenzhen.aliyuncs.com',
+                    'cn-qingdao'          => 'green.aliyuncs.com',
+                    'cn-beijing'          => 'green.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'green.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'green.aliyuncs.com',
+                    'ap-southeast-1'      => 'green.ap-southeast-1.aliyuncs.com',
+                ],
+            'risk'            =>
+                [
+                    'us-east-1'           => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'         => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'         => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'risk-cn-hangzhou.aliyuncs.com',
+                    'us-west-1'           => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou'         => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'    => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'         => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao'          => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'          => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'risk-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'risk-cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'      => 'risk-cn-hangzhou.aliyuncs.com',
+                ],
+            'oceanbase'       =>
+                [
+                    'us-east-1'             => 'oceanbase.aliyuncs.com',
+                    'cn-hongkong'           => 'oceanbase.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'oceanbase.aliyuncs.com',
+                    'cn-shanghai'           => 'oceanbasepro-share.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'oceanbase.aliyuncs.com',
+                    'us-west-1'             => 'oceanbase.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'oceanbase.aliyuncs.com',
+                    'cn-hangzhou'           => 'oceanbasepro-share.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'      => 'oceanbase.aliyuncs.com',
+                    'cn-shenzhen'           => 'oceanbase.aliyuncs.com',
+                    'cn-qingdao'            => 'oceanbase.aliyuncs.com',
+                    'cn-beijing'            => 'oceanbasepro-share.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'oceanbase.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'oceanbase.aliyuncs.com',
+                    'ap-southeast-1'        => 'oceanbasepro-share.ap-southeast-1.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'oceanbasepro-share.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'oceanbasepro-share.cn-hangzhou.aliyuncs.com',
+                ],
+            'msc'             =>
+                [
+                    'us-east-1'           => 'msc-inner.aliyuncs.com',
+                    'cn-hongkong'         => 'msc-inner.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'msc-inner.aliyuncs.com',
+                    'cn-shanghai'         => 'msc-inner.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'msc-inner.aliyuncs.com',
+                    'us-west-1'           => 'msc-inner.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'msc-inner.aliyuncs.com',
+                    'cn-hangzhou'         => 'msc-inner.aliyuncs.com',
+                    'cn-beijing-inner'    => 'msc-inner.aliyuncs.com',
+                    'cn-beijing'          => 'msc-inner.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'msc-inner.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'msc-inner.aliyuncs.com',
+                    'ap-southeast-1'      => 'msc-inner.aliyuncs.com',
+                ],
+            'yundunhsm'       =>
+                [
+                    'us-east-1'           => 'yundunhsm.aliyuncs.com',
+                    'cn-hongkong'         => 'yundunhsm.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'yundunhsm.aliyuncs.com',
+                    'cn-shanghai'         => 'yundunhsm.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'yundunhsm.aliyuncs.com',
+                    'us-west-1'           => 'yundunhsm.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'yundunhsm.aliyuncs.com',
+                    'cn-hangzhou'         => 'yundunhsm.aliyuncs.com',
+                    'cn-beijing-inner'    => 'yundunhsm.aliyuncs.com',
+                    'cn-beijing'          => 'yundunhsm.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'yundunhsm.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'yundunhsm.aliyuncs.com',
+                    'ap-southeast-1'      => 'yundunhsm.aliyuncs.com',
+                ],
+            'iot'             =>
+                [
+                    'cn-hongkong'         => 'iot.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'iot.aliyuncs.com',
+                    'cn-shanghai'         => 'iot.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'iot.aliyuncs.com',
+                    'us-west-1'           => 'iot.us-west-1.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'iot.aliyuncs.com',
+                    'cn-hangzhou'         => 'iot.aliyuncs.com',
+                    'cn-beijing-inner'    => 'iot.aliyuncs.com',
+                    'cn-shenzhen'         => 'iot.aliyuncs.com',
+                    'cn-qingdao'          => 'iot.aliyuncs.com',
+                    'cn-beijing'          => 'iot.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'iot.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'iot.aliyuncs.com',
+                    'ap-southeast-1'      => 'iot.ap-southeast-1.aliyuncs.com',
+                    'ap-northeast-1'      => 'iot.ap-northeast-1.aliyuncs.com',
+                    'us-east-1'           => 'iot.us-east-1.aliyuncs.com',
+                    'eu-central-1'        => 'iot.eu-central-1.aliyuncs.com',
+                ],
+            'oms'             =>
+                [
+                    'us-east-1'           => 'oms.aliyuncs.com',
+                    'cn-hongkong'         => 'oms.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'oms.aliyuncs.com',
+                    'cn-shanghai'         => 'oms.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'oms.aliyuncs.com',
+                    'us-west-1'           => 'oms.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'oms.aliyuncs.com',
+                    'cn-hangzhou'         => 'oms.aliyuncs.com',
+                    'cn-beijing-inner'    => 'oms.aliyuncs.com',
+                    'cn-shenzhen'         => 'oms.aliyuncs.com',
+                    'cn-qingdao'          => 'oms.aliyuncs.com',
+                    'cn-beijing'          => 'oms.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'oms.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'oms.aliyuncs.com',
+                    'ap-southeast-1'      => 'oms.aliyuncs.com',
+                ],
+            'live'            =>
+                [
+                    'us-east-1'           => 'live.aliyuncs.com',
+                    'cn-hongkong'         => 'live.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'live.aliyuncs.com',
+                    'cn-shanghai'         => 'live.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'live.aliyuncs.com',
+                    'us-west-1'           => 'live.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'live.aliyuncs.com',
+                    'cn-hangzhou'         => 'live.aliyuncs.com',
+                    'cn-beijing-inner'    => 'live.aliyuncs.com',
+                    'cn-shenzhen'         => 'live.aliyuncs.com',
+                    'cn-qingdao'          => 'live.aliyuncs.com',
+                    'cn-beijing'          => 'live.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'live.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'live.aliyuncs.com',
+                    'ap-southeast-1'      => 'live.aliyuncs.com',
+                    'ap-northeast-1'      => 'live.aliyuncs.com',
+                    'eu-central-1'        => 'live.aliyuncs.com',
+                    'ap-southeast-5'      => 'live.aliyuncs.com',
+                    'ap-south-1'          => 'live.aliyuncs.com',
+                ],
+            'ubsms'           =>
+                [
+                    'us-east-1'           => 'ubsms.aliyuncs.com',
+                    'cn-hongkong'         => 'ubsms.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'ubsms.aliyuncs.com',
+                    'cn-shanghai'         => 'ubsms.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'ubsms.aliyuncs.com',
+                    'us-west-1'           => 'ubsms.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'ubsms.aliyuncs.com',
+                    'cn-hangzhou'         => 'ubsms.aliyuncs.com',
+                    'cn-beijing-inner'    => 'ubsms.aliyuncs.com',
+                    'cn-shenzhen'         => 'ubsms.aliyuncs.com',
+                    'cn-qingdao'          => 'ubsms.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'          => 'ubsms.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'ubsms.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'ubsms.aliyuncs.com',
+                    'ap-southeast-1'      => 'ubsms.aliyuncs.com',
+                ],
+            'alert'           =>
+                [
+                    'us-east-1'           => 'alert.aliyuncs.com',
+                    'cn-hongkong'         => 'alert.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'alert.aliyuncs.com',
+                    'cn-shanghai'         => 'alert.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'alert.aliyuncs.com',
+                    'us-west-1'           => 'alert.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'alert.aliyuncs.com',
+                    'cn-hangzhou'         => 'alert.aliyuncs.com',
+                    'cn-beijing-inner'    => 'alert.aliyuncs.com',
+                    'cn-shenzhen'         => 'alert.aliyuncs.com',
+                    'cn-qingdao'          => 'alert.aliyuncs.com',
+                    'cn-beijing'          => 'alert.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'alert.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'alert.aliyuncs.com',
+                    'ap-southeast-1'      => 'alert.aliyuncs.com',
+                ],
+            'ace'             =>
+                [
+                    'us-east-1'           => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'         => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'         => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'ace.cn-hangzhou.aliyuncs.com',
+                    'us-west-1'           => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou'         => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'    => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'         => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao'          => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'          => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'ace.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'ace.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'      => 'ace.cn-hangzhou.aliyuncs.com',
+                ],
+            'ams'             =>
+                [
+                    'us-east-1'           => 'ams.aliyuncs.com',
+                    'cn-hongkong'         => 'ams.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'ams.aliyuncs.com',
+                    'cn-shanghai'         => 'ams.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'ams.aliyuncs.com',
+                    'us-west-1'           => 'ams.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'ams.aliyuncs.com',
+                    'cn-hangzhou'         => 'ams.aliyuncs.com',
+                    'cn-beijing-inner'    => 'ams.aliyuncs.com',
+                    'cn-beijing'          => 'ams.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'ams.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'ams.aliyuncs.com',
+                    'ap-southeast-1'      => 'ams.aliyuncs.com',
+                ],
+            'ros'             =>
+                [
+                    'us-east-1'           => 'ros.aliyuncs.com',
+                    'cn-hongkong'         => 'ros.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'ros.aliyuncs.com',
+                    'cn-shanghai'         => 'ros.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'ros.aliyuncs.com',
+                    'us-west-1'           => 'ros.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'ros.aliyuncs.com',
+                    'cn-hangzhou'         => 'ros.aliyuncs.com',
+                    'cn-beijing-inner'    => 'ros.aliyuncs.com',
+                    'cn-shenzhen'         => 'ros.aliyuncs.com',
+                    'cn-qingdao'          => 'ros.aliyuncs.com',
+                    'cn-beijing'          => 'ros.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'ros.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'ros.aliyuncs.com',
+                    'ap-southeast-1'      => 'ros.aliyuncs.com',
+                ],
+            'pts'             =>
+                [
+                    'us-east-1'           => 'pts.aliyuncs.com',
+                    'cn-hongkong'         => 'pts.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'pts.aliyuncs.com',
+                    'cn-shanghai'         => 'pts.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'pts.aliyuncs.com',
+                    'us-west-1'           => 'pts.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'pts.aliyuncs.com',
+                    'cn-hangzhou'         => 'pts.aliyuncs.com',
+                    'cn-beijing-inner'    => 'pts.aliyuncs.com',
+                    'cn-shenzhen'         => 'pts.aliyuncs.com',
+                    'cn-qingdao'          => 'pts.aliyuncs.com',
+                    'cn-beijing'          => 'pts.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'pts.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'pts.aliyuncs.com',
+                    'ap-southeast-1'      => 'pts.aliyuncs.com',
+                ],
+            'qualitycheck'    =>
+                [
+                    'us-east-1'           => 'qualitycheck.aliyuncs.com',
+                    'cn-hongkong'         => 'qualitycheck.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'qualitycheck.aliyuncs.com',
+                    'cn-shanghai'         => 'qualitycheck.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'qualitycheck.aliyuncs.com',
+                    'us-west-1'           => 'qualitycheck.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'qualitycheck.aliyuncs.com',
+                    'cn-hangzhou'         => 'qualitycheck.aliyuncs.com',
+                    'cn-beijing-inner'    => 'qualitycheck.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'qualitycheck.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'qualitycheck.aliyuncs.com',
+                    'ap-southeast-1'      => 'qualitycheck.aliyuncs.com',
+                ],
+            'm-kvstore'       =>
+                [
+                    'us-east-1'           => 'm-kvstore.aliyuncs.com',
+                    'cn-hongkong'         => 'm-kvstore.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'm-kvstore.aliyuncs.com',
+                    'cn-shanghai'         => 'm-kvstore.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'm-kvstore.aliyuncs.com',
+                    'us-west-1'           => 'm-kvstore.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'm-kvstore.aliyuncs.com',
+                    'cn-hangzhou'         => 'm-kvstore.aliyuncs.com',
+                    'cn-beijing-inner'    => 'm-kvstore.aliyuncs.com',
+                    'cn-shenzhen'         => 'm-kvstore.aliyuncs.com',
+                    'cn-qingdao'          => 'm-kvstore.aliyuncs.com',
+                    'cn-beijing'          => 'm-kvstore.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'm-kvstore.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'm-kvstore.aliyuncs.com',
+                    'ap-southeast-1'      => 'm-kvstore.aliyuncs.com',
+                ],
+            'highddos'        =>
+                [
+                    'us-east-1'           => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'         => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'         => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'us-west-1'           => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou'         => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'    => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'         => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao'          => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'          => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'      => 'yd-highddos-cn-hangzhou.aliyuncs.com',
+                ],
+            'cmssitemonitor'  =>
+                [
+                    'us-east-1'           => 'sitemonitor.aliyuncs.com',
+                    'cn-hongkong'         => 'sitemonitor.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'sitemonitor.aliyuncs.com',
+                    'cn-shanghai'         => 'sitemonitor.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'sitemonitor.aliyuncs.com',
+                    'us-west-1'           => 'sitemonitor.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'sitemonitor.aliyuncs.com',
+                    'cn-hangzhou'         => 'sitemonitor.aliyuncs.com',
+                    'cn-beijing-inner'    => 'sitemonitor.aliyuncs.com',
+                    'cn-shenzhen'         => 'sitemonitor.aliyuncs.com',
+                    'cn-qingdao'          => 'sitemonitor.aliyuncs.com',
+                    'cn-beijing'          => 'sitemonitor.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'sitemonitor.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'sitemonitor.aliyuncs.com',
+                    'ap-southeast-1'      => 'sitemonitor.aliyuncs.com',
+                ],
+            'batchcompute'    =>
+                [
+                    'us-east-1'           => 'batchCompute.us-east-1.aliyuncs.com',
+                    'cn-hongkong'         => 'batchCompute.cn-hongkong.aliyuncs.com',
+                    'cn-shanghai'         => 'batchCompute.cn-shanghai.aliyuncs.com',
+                    'us-west-1'           => 'batchCompute.us-west-1.aliyuncs.com',
+                    'cn-hangzhou'         => 'batchCompute.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'         => 'batchcompute.cn-shenzhen.aliyuncs.com',
+                    'cn-qingdao'          => 'batchcompute.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'          => 'batchCompute.cn-beijing.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'batchCompute.cn-shanghai-et2-b01.aliyuncs.com',
+                    'ap-southeast-1'      => 'batchCompute.ap-southeast-1.aliyuncs.com',
+                ],
+            'cf'              =>
+                [
+                    'us-east-1'           => 'cf.aliyuncs.com',
+                    'cn-hongkong'         => 'cf.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'cf.aliyuncs.com',
+                    'cn-shanghai'         => 'cf.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'cf.aliyuncs.com',
+                    'us-west-1'           => 'cf.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'cf.aliyuncs.com',
+                    'cn-hangzhou'         => 'cf.aliyuncs.com',
+                    'cn-beijing-inner'    => 'cf.aliyuncs.com',
+                    'cn-shenzhen'         => 'cf.aliyuncs.com',
+                    'cn-qingdao'          => 'cf.aliyuncs.com',
+                    'cn-beijing'          => 'cf.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'cf.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'cf.aliyuncs.com',
+                    'ap-southeast-1'      => 'cf.aliyuncs.com',
+                ],
+            'drds'            =>
+                [
+                    'us-east-1'           => 'drds.aliyuncs.com',
+                    'cn-hongkong'         => 'drds.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'drds.aliyuncs.com',
+                    'cn-shanghai'         => 'drds.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'drds.aliyuncs.com',
+                    'us-west-1'           => 'drds.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'drds.aliyuncs.com',
+                    'cn-hangzhou'         => 'drds.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'    => 'drds.aliyuncs.com',
+                    'cn-shenzhen'         => 'drds.aliyuncs.com',
+                    'cn-qingdao'          => 'drds.aliyuncs.com',
+                    'cn-beijing'          => 'drds.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'drds.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'drds.aliyuncs.com',
+                    'ap-southeast-1'      => 'drds.aliyuncs.com',
+                ],
+            'acs'             =>
+                [
+                    'us-east-1'           => 'acs.aliyun-inc.com',
+                    'cn-hongkong'         => 'acs.aliyun-inc.com',
+                    'cn-shanghai'         => 'acs.aliyun-inc.com',
+                    'us-west-1'           => 'acs.aliyun-inc.com',
+                    'cn-hangzhou'         => 'acs.aliyun-inc.com',
+                    'cn-shenzhen'         => 'acs.aliyun-inc.com',
+                    'cn-qingdao'          => 'acs.aliyun-inc.com',
+                    'cn-beijing'          => 'acs.aliyun-inc.com',
+                    'cn-shanghai-et2-b01' => 'acs.aliyun-inc.com',
+                ],
+            'httpdns'         =>
+                [
+                    'us-east-1'           => 'httpdns-api.aliyuncs.com',
+                    'cn-hongkong'         => 'httpdns-api.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'httpdns-api.aliyuncs.com',
+                    'cn-shanghai'         => 'httpdns-api.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'httpdns-api.aliyuncs.com',
+                    'us-west-1'           => 'httpdns-api.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'httpdns-api.aliyuncs.com',
+                    'cn-hangzhou'         => 'httpdns-api.aliyuncs.com',
+                    'cn-beijing-inner'    => 'httpdns-api.aliyuncs.com',
+                    'cn-shenzhen'         => 'httpdns-api.aliyuncs.com',
+                    'cn-qingdao'          => 'httpdns-api.aliyuncs.com',
+                    'cn-beijing'          => 'httpdns-api.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'httpdns-api.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'httpdns-api.aliyuncs.com',
+                    'ap-southeast-1'      => 'httpdns-api.aliyuncs.com',
+                ],
+            'location-inner'  =>
+                [
+                    'us-east-1'           => 'location-inner.aliyuncs.com',
+                    'cn-hongkong'         => 'location-inner.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'location-inner.aliyuncs.com',
+                    'cn-shanghai'         => 'location-inner.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'location-inner.aliyuncs.com',
+                    'us-west-1'           => 'location-inner.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'location-inner.aliyuncs.com',
+                    'cn-hangzhou'         => 'location-inner.aliyuncs.com',
+                    'cn-beijing-inner'    => 'location-inner.aliyuncs.com',
+                    'cn-shenzhen'         => 'location-inner.aliyuncs.com',
+                    'cn-qingdao'          => 'location-inner.aliyuncs.com',
+                    'cn-beijing'          => 'location-inner.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'location-inner.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'location-inner.aliyuncs.com',
+                    'ap-southeast-1'      => 'location-inner.aliyuncs.com',
+                ],
+            'aas'             =>
+                [
+                    'us-east-1'           => 'aas.aliyuncs.com',
+                    'cn-hongkong'         => 'aas.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'aas.aliyuncs.com',
+                    'cn-shanghai'         => 'aas.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'aas.aliyuncs.com',
+                    'us-west-1'           => 'aas.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'aas.aliyuncs.com',
+                    'cn-hangzhou'         => 'aas.aliyuncs.com',
+                    'cn-beijing-inner'    => 'aas.aliyuncs.com',
+                    'cn-shenzhen'         => 'aas.aliyuncs.com',
+                    'cn-qingdao'          => 'aas.aliyuncs.com',
+                    'cn-beijing'          => 'aas.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'aas.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'aas.aliyuncs.com',
+                    'ap-southeast-1'      => 'aas.aliyuncs.com',
+                ],
+            'sts'             =>
+                [
+                    'cn-hangzhou'    => 'sts.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'sts.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'sts.cn-shenzhen.aliyuncs.com',
+                    'cn-qingdao'     => 'sts.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'     => 'sts.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'sts.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'sts.cn-huhehaote.aliyuncs.com',
+                    'cn-hongkong'    => 'sts.cn-hongkong.aliyuncs.com',
+                    'cn-chengdu'     => 'sts.cn-chengdu.aliyuncs.com',
+                    'ap-southeast-1' => 'sts.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2' => 'sts.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3' => 'sts.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5' => 'sts.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1' => 'sts.ap-northeast-1.aliyuncs.com',
+                    'ap-south-1'     => 'sts.ap-south-1.aliyuncs.com',
+                    'us-west-1'      => 'sts.us-west-1.aliyuncs.com',
+                    'us-east-1'      => 'sts.us-east-1.aliyuncs.com',
+                    'eu-central-1'   => 'sts.eu-central-1.aliyuncs.com',
+                    'me-east-1'      => 'sts.me-east-1.aliyuncs.com',
+                    'eu-west-1'      => 'sts.eu-west-1.aliyuncs.com',
+                ],
+            'dts'             =>
+                [
+                    'us-east-1'             => 'dts.aliyuncs.com',
+                    'cn-hongkong'           => 'dts.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'dts.aliyuncs.com',
+                    'cn-shanghai'           => 'dts.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'dts.aliyuncs.com',
+                    'us-west-1'             => 'dts.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'dts.aliyuncs.com',
+                    'cn-hangzhou'           => 'dts.aliyuncs.com',
+                    'cn-beijing-inner'      => 'dts.aliyuncs.com',
+                    'cn-shenzhen'           => 'dts.aliyuncs.com',
+                    'cn-qingdao'            => 'dts.aliyuncs.com',
+                    'cn-beijing'            => 'dts.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'dts.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'dts.aliyuncs.com',
+                    'ap-southeast-1'        => 'dts.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'dts.aliyuncs.com',
+                    'cn-huhehaote'          => 'dts.aliyuncs.com',
+                    'ap-southeast-2'        => 'dts.aliyuncs.com',
+                    'ap-southeast-3'        => 'dts.aliyuncs.com',
+                    'ap-southeast-5'        => 'dts.aliyuncs.com',
+                    'eu-west-1'             => 'dts.aliyuncs.com',
+                    'eu-central-1'          => 'dts.aliyuncs.com',
+                    'me-east-1'             => 'dts.aliyuncs.com',
+                    'ap-south-1'            => 'dts.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'dts.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'dts.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'dts.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'dts.aliyuncs.com',
+                    'cn-beijing-gov-1'      => 'dts.aliyuncs.com',
+                ],
+            'drc'             =>
+                [
+                    'us-east-1'           => 'drc.aliyuncs.com',
+                    'cn-hongkong'         => 'drc.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'drc.aliyuncs.com',
+                    'cn-shanghai'         => 'drc.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'drc.aliyuncs.com',
+                    'us-west-1'           => 'drc.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'drc.aliyuncs.com',
+                    'cn-hangzhou'         => 'drc.aliyuncs.com',
+                    'cn-beijing-inner'    => 'drc.aliyuncs.com',
+                    'cn-shenzhen'         => 'drc.aliyuncs.com',
+                    'cn-qingdao'          => 'drc.aliyuncs.com',
+                    'cn-beijing'          => 'drc.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'drc.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'drc.aliyuncs.com',
+                    'ap-southeast-1'      => 'drc.aliyuncs.com',
+                ],
+            'vpc-inner'       =>
+                [
+                    'us-east-1'           => 'vpc-inner.aliyuncs.com',
+                    'cn-hongkong'         => 'vpc-inner.aliyuncs.com',
+                    'cn-shanghai'         => 'vpc-inner.aliyuncs.com',
+                    'us-west-1'           => 'vpc-inner.aliyuncs.com',
+                    'cn-hangzhou'         => 'vpc-inner.aliyuncs.com',
+                    'cn-shenzhen'         => 'vpc-inner.aliyuncs.com',
+                    'cn-qingdao'          => 'vpc-inner.aliyuncs.com',
+                    'cn-beijing'          => 'vpc-inner.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'vpc-inner.aliyuncs.com',
+                ],
+            'crm'             =>
+                [
+                    'us-east-1'           => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'         => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'         => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'crm-cn-hangzhou.aliyuncs.com',
+                    'us-west-1'           => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou'         => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'    => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'         => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao'          => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'          => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'crm-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'crm-cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'      => 'crm-cn-hangzhou.aliyuncs.com',
+                ],
+            'domain'          =>
+                [
+                    'us-east-1'           => 'domain.aliyuncs.com',
+                    'cn-hongkong'         => 'domain.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'domain.aliyuncs.com',
+                    'cn-shanghai'         => 'domain.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'domain.aliyuncs.com',
+                    'us-west-1'           => 'domain.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'domain.aliyuncs.com',
+                    'cn-hangzhou'         => 'domain.aliyuncs.com',
+                    'cn-beijing-inner'    => 'domain.aliyuncs.com',
+                    'cn-shenzhen'         => 'domain.aliyuncs.com',
+                    'cn-qingdao'          => 'domain.aliyuncs.com',
+                    'cn-beijing'          => 'domain.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'domain.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'domain.aliyuncs.com',
+                    'ap-southeast-1'      => 'domain.aliyuncs.com',
+                ],
+            'ots'             =>
+                [
+                    'us-east-1'             => 'ots.us-east-1.aliyuncs.com',
+                    'cn-hongkong'           => 'ots.cn-hongkong.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'ots-pop.aliyuncs.com',
+                    'cn-shanghai'           => 'ots.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'ots-pop.aliyuncs.com',
+                    'us-west-1'             => 'ots.us-west-1.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'ots-pop.aliyuncs.com',
+                    'cn-hangzhou'           => 'ots.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'      => 'ots-pop.aliyuncs.com',
+                    'cn-shenzhen'           => 'ots.cn-shenzhen.aliyuncs.com',
+                    'cn-qingdao'            => 'ots.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'ots.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'ots-pop.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'ots-pop.aliyuncs.com',
+                    'ap-southeast-1'        => 'ots.ap-southeast-1.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'ots.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'ots.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-2'        => 'ots.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'ots.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'ots.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'        => 'ots.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'ots.eu-west-1.aliyuncs.com',
+                    'eu-central-1'          => 'ots.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'ots.me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'ots.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'            => 'ots.cn-chengdu.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'ots.cn-shanghai-finance-1.aliyuncs.com',
+                ],
+            'oss'             =>
+                [
+                    'us-east-1'             => 'oss-cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'           => 'oss-cn-hongkong.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'oss-cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao-finance'    => 'oss-cn-qdjbp-a.aliyuncs.com',
+                    'cn-beijing-gov-1'      => 'oss-cn-haidian-a.aliyuncs.com',
+                    'cn-shanghai'           => 'oss-cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'oss-cn-hangzhou.aliyuncs.com',
+                    'us-west-1'             => 'oss-us-west-1.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'oss-cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'oss-cn-hzjbp-b-console.aliyuncs.com',
+                    'cn-hangzhou'           => 'oss-cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'      => 'oss-cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'           => 'oss-cn-shenzhen.aliyuncs.com',
+                    'cn-qingdao'            => 'oss-cn-qingdao.aliyuncs.com',
+                    'oss-cn-bjzwy'          => 'oss-cn-bjzwy.aliyuncs.com',
+                    'cn-beijing'            => 'oss-cn-beijing.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'oss-cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'oss-cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'        => 'oss-ap-southeast-1.aliyuncs.com',
+                    'cn-chengdu'            => 'oss-cn-chengdu.aliyuncs.com',
+                    'ap-northeast-1'        => 'oss-ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'oss-eu-west-1.aliyuncs.com',
+                    'me-east-1'             => 'oss-me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'oss-ap-south-1.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'oss-cn-shanghai-finance-1-internal.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'oss-cn-shenzhen-finance-1-internal.aliyuncs.com',
+                    'cn-huhehaote-nebula-1' => 'oss-cn-huhehaote-nebula-1.aliyuncs.com',
+                    'cn-zhengzhou-nebula-1' => 'oss-cn-zhengzhou-nebula-1.aliyuncs.com',
+                    'cn-heyuan'             => 'oss-cn-heyuan.aliyuncs.com',
+                    'cn-wulanchabu'         => 'oss-cn-wulanchabu.aliyuncs.com',
+                ],
+            'ram'             =>
+                [
+                    'global'              => 'ram.aliyuncs.com',
+                    'us-east-1'           => 'ram.aliyuncs.com',
+                    'cn-hongkong'         => 'ram.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'ram.aliyuncs.com',
+                    'cn-shanghai'         => 'ram.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'ram.aliyuncs.com',
+                    'us-west-1'           => 'ram.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'ram.aliyuncs.com',
+                    'cn-hangzhou'         => 'ram.aliyuncs.com',
+                    'cn-beijing-inner'    => 'ram.aliyuncs.com',
+                    'cn-shenzhen'         => 'ram.aliyuncs.com',
+                    'cn-qingdao'          => 'ram.aliyuncs.com',
+                    'cn-beijing'          => 'ram.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'ram.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'ram.aliyuncs.com',
+                    'ap-southeast-1'      => 'ram.aliyuncs.com',
+                ],
+            'sales'           =>
+                [
+                    'us-east-1'           => 'sales.cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'         => 'sales.cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'sales.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'         => 'sales.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'sales.cn-hangzhou.aliyuncs.com',
+                    'us-west-1'           => 'sales.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'sales.cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou'         => 'sales.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'    => 'sales.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'          => 'sales.cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'sales.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'sales.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'      => 'sales.cn-hangzhou.aliyuncs.com',
+                ],
+            'ossadmin'        =>
+                [
+                    'us-east-1'           => 'oss-admin.aliyuncs.com',
+                    'cn-hongkong'         => 'oss-admin.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'oss-admin.aliyuncs.com',
+                    'cn-shanghai'         => 'oss-admin.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'oss-admin.aliyuncs.com',
+                    'us-west-1'           => 'oss-admin.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'oss-admin.aliyuncs.com',
+                    'cn-hangzhou'         => 'oss-admin.aliyuncs.com',
+                    'cn-beijing-inner'    => 'oss-admin.aliyuncs.com',
+                    'cn-shenzhen'         => 'oss-admin.aliyuncs.com',
+                    'cn-qingdao'          => 'oss-admin.aliyuncs.com',
+                    'cn-beijing'          => 'oss-admin.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'oss-admin.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'oss-admin.aliyuncs.com',
+                    'ap-southeast-1'      => 'oss-admin.aliyuncs.com',
+                ],
+            'alidns'          =>
+                [
+                    'us-east-1'           => 'alidns.aliyuncs.com',
+                    'cn-hongkong'         => 'alidns.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'alidns.aliyuncs.com',
+                    'cn-shanghai'         => 'alidns.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'alidns.aliyuncs.com',
+                    'us-west-1'           => 'alidns.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'alidns.aliyuncs.com',
+                    'cn-hangzhou'         => 'alidns.aliyuncs.com',
+                    'cn-beijing-inner'    => 'alidns.aliyuncs.com',
+                    'cn-shenzhen'         => 'alidns.aliyuncs.com',
+                    'cn-qingdao'          => 'alidns.aliyuncs.com',
+                    'cn-beijing'          => 'alidns.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'alidns.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'alidns.aliyuncs.com',
+                    'ap-southeast-1'      => 'alidns.aliyuncs.com',
+                ],
+            'ons'             =>
+                [
+                    'us-east-1'             => 'ons.us-east-1.aliyuncs.com',
+                    'cn-hongkong'           => 'ons.cn-hongkong.aliyuncs.com',
+                    'cn-qingdao-cm9'        => 'ons.aliyuncs.com',
+                    'cn-shanghai'           => 'ons.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen-inner'     => 'ons.aliyuncs.com',
+                    'us-west-1'             => 'ons.us-west-1.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'ons.aliyuncs.com',
+                    'cn-hangzhou'           => 'ons.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'      => 'ons.aliyuncs.com',
+                    'cn-shenzhen'           => 'ons.cn-shenzhen.aliyuncs.com',
+                    'cn-qingdao'            => 'ons.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'ons.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou-d'         => 'ons.aliyuncs.com',
+                    'cn-shanghai-et2-b01'   => 'ons.aliyuncs.com',
+                    'ap-southeast-1'        => 'ons.ap-southeast-1.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'ons.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'ons.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-2'        => 'ons.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'ons.ap-southeast-3.aliyuncs.com',
+                    'ap-northeast-1'        => 'ons.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'ons.eu-west-1.aliyuncs.com',
+                    'eu-central-1'          => 'ons.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'ons.me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'ons.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'            => 'ons.cn-chengdu.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'ons.cn-hangzhou-finance.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'ons.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'ons.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'ons.cn-north-2-gov-1.aliyuncs.com',
+                    'ap-southeast-5'        => 'ons.ap-southeast-5.aliyuncs.com',
+                ],
+            'cdn'             =>
+                [
+                    'global'              => 'cdn.aliyuncs.com',
+                    'us-east-1'           => 'cdn.aliyuncs.com',
+                    'cn-hongkong'         => 'cdn.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'cdn.aliyuncs.com',
+                    'cn-shanghai'         => 'cdn.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'cdn.aliyuncs.com',
+                    'us-west-1'           => 'cdn.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'cdn.aliyuncs.com',
+                    'cn-hangzhou'         => 'cdn.aliyuncs.com',
+                    'cn-beijing-inner'    => 'cdn.aliyuncs.com',
+                    'cn-shenzhen'         => 'cdn.aliyuncs.com',
+                    'cn-qingdao'          => 'cdn.aliyuncs.com',
+                    'cn-beijing'          => 'cdn.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'cdn.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'cdn.aliyuncs.com',
+                    'ap-southeast-1'      => 'cdn.aliyuncs.com',
+                ],
+            'yundunddos'      =>
+                [
+                    'us-east-1'           => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'         => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'         => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'us-west-1'           => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou'         => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'    => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'          => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'      => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com',
+                ],
+            'kvstore'         =>
+                [
+                    'ap-northeast-1' => 'r-kvstore.ap-northeast-1.aliyuncs.com',
+                ],
+            'cloudapi'        =>
+                [
+                    'cn-hongkong'    => 'apigateway.cn-hongkong.aliyuncs.com',
+                    'cn-shanghai'    => 'apigateway.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'    => 'apigateway.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'    => 'apigateway.cn-shenzhen.aliyuncs.com',
+                    'cn-qingdao'     => 'apigateway.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'     => 'apigateway.cn-beijing.aliyuncs.com',
+                    'ap-southeast-1' => 'apigateway.ap-southeast-1.aliyuncs.com',
+                ],
+            'mts'             =>
+                [
+                    'cn-hongkong'         => 'mts.cn-hongkong.aliyuncs.com',
+                    'cn-qingdao-cm9'      => 'mts.cn-qingdao.aliyuncs.com',
+                    'cn-shanghai'         => 'mts.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen-inner'   => 'mts.cn-shenzhen.aliyuncs.com',
+                    'us-west-1'           => 'mts.us-west-1.aliyuncs.com',
+                    'cn-shanghai-inner'   => 'mts.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'         => 'mts.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing-inner'    => 'mts.cn-beijing.aliyuncs.com',
+                    'cn-shenzhen'         => 'mts.cn-shenzhen.aliyuncs.com',
+                    'cn-qingdao'          => 'mts.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'          => 'mts.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou-d'       => 'mts.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-et2-b01' => 'mts.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'      => 'mts.ap-southeast-1.aliyuncs.com',
+                    'cn-zhangjiakou'      => 'mts.cn-zhangjiakou.aliyuncs.com',
+                    'ap-northeast-1'      => 'mts.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'           => 'mts.eu-west-1.aliyuncs.com',
+                    'eu-central-1'        => 'mts.eu-central-1.aliyuncs.com',
+                    'ap-south-1'          => 'mts.ap-south-1.aliyuncs.com',
+                    'ap-southeast-5'      => 'mts.ap-southeast-5.aliyuncs.com',
+                ],
+            'saf'             =>
+                [
+                    'cn-shanghai'      => 'saf.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'      => 'saf.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'      => 'saf.cn-shenzhen.aliyuncs.com',
+                    'ap-southeast-1'   => 'saf.ap-southeast-1.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'saf.cn-north-2-gov-1.aliyuncs.com',
+                    'cn-zhangjiakou'   => 'saf.cn-zhangjiakou.aliyuncs.com',
+                ],
+            'arms'            =>
+                [
+                    'cn-shanghai'    => 'arms.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'    => 'arms.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'    => 'arms.cn-shenzhen.aliyuncs.com',
+                    'cn-beijing'     => 'arms.cn-beijing.aliyuncs.com',
+                    'cn-qingdao'     => 'arms.cn-qingdao.aliyuncs.com',
+                    'cn-zhangjiakou' => 'arms.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hongkong'    => 'arms.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1' => 'arms.ap-southeast-1.aliyuncs.com',
+                    'ap-south-1'     => 'arms.ap-south-1.aliyuncs.com',
+                ],
+            'apigateway'      =>
+                [
+                    'cn-shanghai'           => 'apigateway.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'           => 'apigateway.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'           => 'apigateway.cn-shenzhen.aliyuncs.com',
+                    'cn-qingdao'            => 'apigateway.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'apigateway.cn-beijing.aliyuncs.com',
+                    'ap-southeast-1'        => 'apigateway.ap-southeast-1.aliyuncs.com',
+                    'cn-hongkong'           => 'apigateway.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-2'        => 'apigateway.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'apigateway.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'apigateway.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'        => 'apigateway.ap-northeast-1.aliyuncs.com',
+                    'eu-central-1'          => 'apigateway.eu-central-1.aliyuncs.com',
+                    'ap-south-1'            => 'apigateway.ap-south-1.aliyuncs.com',
+                    'eu-west-1'             => 'apigateway.eu-west-1.aliyuncs.com',
+                    'me-east-1'             => 'apigateway.me-east-1.aliyuncs.com',
+                    'us-east-1'             => 'apigateway.us-east-1.aliyuncs.com',
+                    'us-west-1'             => 'apigateway.us-west-1.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'apigateway.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'apigateway.cn-huhehaote.aliyuncs.com',
+                    'cn-chengdu'            => 'apigateway.cn-chengdu.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'apigateway.cn-north-2-gov-1.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'apigateway.cn-hangzhou-finance.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'apigateway.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'apigateway.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-shanghai-inner'     => 'apigateway.cn-shanghai-inner.aliyuncs.com',
+                    'cn-heyuan'             => 'apigateway.cn-heyuan.aliyuncs.com',
+                ],
+            'vod'             =>
+                [
+                    'cn-shanghai'      => 'vod.cn-shanghai.aliyuncs.com',
+                    'cn-beijing'       => 'vod.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'      => 'vod.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'      => 'vod.cn-shenzhen.aliyuncs.com',
+                    'ap-southeast-1'   => 'vod.ap-southeast-1.aliyuncs.com',
+                    'eu-central-1'     => 'vod.eu-central-1.aliyuncs.com',
+                    'cn-zhangjiakou'   => 'vod.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hongkong'      => 'vod.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-5'   => 'vod.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'   => 'vod.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'        => 'vod.eu-west-1.aliyuncs.com',
+                    'us-west-1'        => 'vod.us-west-1.aliyuncs.com',
+                    'ap-south-1'       => 'vod.ap-south-1.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'vod.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'afs'             =>
+                [
+                    'cn-hangzhou' => 'afs.aliyuncs.com',
+                ],
+            'oas'             =>
+                [
+                    'cn-hangzhou' => 'cn-hangzhou.oas.aliyuncs.com',
+                    'cn-shenzhen' => 'cn-shenzhen.oas.aliyuncs.com',
+                    'cn-beijing'  => 'cn-beijing.oas.aliyuncs.com',
+                ],
+            'alikafka'        =>
+                [
+                    'cn-qingdao'            => 'alikafka.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'alikafka.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou'           => 'alikafka.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'alikafka.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'alikafka.cn-shenzhen.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'alikafka.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'alikafka.cn-huhehaote.aliyuncs.com',
+                    'cn-hongkong'           => 'alikafka.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1'        => 'alikafka.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-5'        => 'alikafka.ap-southeast-5.aliyuncs.com',
+                    'ap-south-1'            => 'alikafka.ap-south-1.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'alikafka.cn-hangzhou-finance.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'alikafka.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'alikafka.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-chengdu'            => 'alikafka.cn-chengdu.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'alikafka.cn-north-2-gov-1.aliyuncs.com',
+                    'cn-heyuan'             => 'alikafka.cn-heyuan.aliyuncs.com',
+                    'ap-southeast-3'        => 'alikafka.ap-southeast-3.aliyuncs.com',
+                    'ap-northeast-1'        => 'alikafka.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'alikafka.eu-west-1.aliyuncs.com',
+                    'eu-central-1'          => 'alikafka.eu-central-1.aliyuncs.com',
+                ],
+            'cbn'             =>
+                [
+                    'cn-qingdao'                  => 'cbn.aliyuncs.com',
+                    'cn-beijing'                  => 'cbn.aliyuncs.com',
+                    'cn-zhangjiakou'              => 'cbn.aliyuncs.com',
+                    'cn-huhehaote'                => 'cbn.aliyuncs.com',
+                    'cn-hangzhou'                 => 'cbn.aliyuncs.com',
+                    'cn-shanghai'                 => 'cbn.aliyuncs.com',
+                    'cn-shenzhen'                 => 'cbn.aliyuncs.com',
+                    'cn-hongkong'                 => 'cbn.aliyuncs.com',
+                    'ap-southeast-1'              => 'cbn.aliyuncs.com',
+                    'ap-southeast-2'              => 'cbn.aliyuncs.com',
+                    'ap-southeast-3'              => 'cbn.aliyuncs.com',
+                    'ap-southeast-5'              => 'cbn.aliyuncs.com',
+                    'ap-northeast-1'              => 'cbn.aliyuncs.com',
+                    'eu-west-1'                   => 'cbn.aliyuncs.com',
+                    'us-west-1'                   => 'cbn.aliyuncs.com',
+                    'us-east-1'                   => 'cbn.aliyuncs.com',
+                    'eu-central-1'                => 'cbn.aliyuncs.com',
+                    'me-east-1'                   => 'cbn.aliyuncs.com',
+                    'ap-south-1'                  => 'cbn.aliyuncs.com',
+                    'cn-chengdu'                  => 'cbn.aliyuncs.com',
+                    'cn-shanghai-finance-1'       => 'cbn.aliyuncs.com',
+                    'cn-shenzhen-finance-1'       => 'cbn.aliyuncs.com',
+                    'ap-northeast-2-pop'          => 'cbn.aliyuncs.com',
+                    'cn-beijing-finance-pop'      => 'cbn.aliyuncs.com',
+                    'cn-hangzhou-internal-test-1' => 'cbn.aliyuncs.com',
+                    'cn-hangzhou-internal-test-2' => 'cbn.aliyuncs.com',
+                    'cn-hangzhou-internal-test-3' => 'cbn.aliyuncs.com',
+                    'cn-wuhan'                    => 'cbn.aliyuncs.com',
+                    'cn-heyuan'                   => 'cbn.aliyuncs.com',
+                    'cn-wulanchabu'               => 'cbn.aliyuncs.com',
+                    'cn-north-2-gov-1'            => 'cbn.aliyuncs.com',
+                ],
+            'onsvip'          =>
+                [
+                    'cn-qingdao'            => 'ons.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'ons.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou'           => 'ons.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'ons.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'ons.cn-shenzhen.aliyuncs.com',
+                    'ap-southeast-1'        => 'ons.ap-southeast-1.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'ons.cn-hangzhou-finance.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'ons.cn-shanghai-finance.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'ons.cn-shenzhen-finance.aliyuncs.com',
+                ],
+            'ddosbgp'         =>
+                [
+                    'cn-qingdao'     => 'ddosbgp.aliyuncs.com',
+                    'cn-beijing'     => 'ddosbgp.aliyuncs.com',
+                    'cn-zhangjiakou' => 'ddosbgp.aliyuncs.com',
+                    'cn-huhehaote'   => 'ddosbgp.aliyuncs.com',
+                    'cn-hangzhou'    => 'ddosbgp.aliyuncs.com',
+                    'cn-shanghai'    => 'ddosbgp.aliyuncs.com',
+                    'cn-shenzhen'    => 'ddosbgp.aliyuncs.com',
+                    'cn-hongkong'    => 'ddosbgp.cn-hongkong.aliyuncs.com',
+                    'us-west-1'      => 'ddosbgp.us-west-1.aliyuncs.com',
+                    'ap-southeast-1' => 'ddosbgp.ap-southeast-1.aliyuncs.com',
+                    'us-east-1'      => 'ddosbgp.us-east-1.aliyuncs.com',
+                    'cn-chengdu'     => 'ddosbgp.aliyuncs.com',
+                    'cn-heyuan'      => 'ddosbgp.aliyuncs.com',
+                    'cn-wulanchabu'  => 'ddosbgp.aliyuncs.com',
+                    'ap-southeast-2' => 'ddosbgp.aliyuncs.com',
+                    'ap-southeast-3' => 'ddosbgp.aliyuncs.com',
+                    'ap-southeast-5' => 'ddosbgp.aliyuncs.com',
+                    'ap-northeast-1' => 'ddosbgp.aliyuncs.com',
+                    'eu-west-1'      => 'ddosbgp.aliyuncs.com',
+                    'eu-central-1'   => 'ddosbgp.aliyuncs.com',
+                    'me-east-1'      => 'ddosbgp.aliyuncs.com',
+                    'ap-south-1'     => 'ddosbgp.aliyuncs.com',
+                ],
+            'ehs'             =>
+                [
+                    'cn-qingdao'     => 'ehpc.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'     => 'ehpc.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'ehpc.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'ehpc.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'    => 'ehpc.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'ehpc.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'ehpc.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'    => 'ehpc.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1' => 'ehpc.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2' => 'ehpc.ap-southeast-2.aliyuncs.com',
+                    'eu-central-1'   => 'ehpc.eu-central-1.aliyuncs.com',
+                    'ap-northeast-1' => 'ehpc.ap-northeast-1.aliyuncs.com',
+                ],
+            'redisa'          =>
+                [
+                    'cn-qingdao'            => 'r-kvstore.aliyuncs.com',
+                    'cn-beijing'            => 'r-kvstore.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'r-kvstore.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'r-kvstore.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'r-kvstore.aliyuncs.com',
+                    'cn-shanghai'           => 'r-kvstore.aliyuncs.com',
+                    'cn-shenzhen'           => 'r-kvstore.aliyuncs.com',
+                    'cn-hongkong'           => 'r-kvstore.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1'        => 'r-kvstore.aliyuncs.com',
+                    'ap-southeast-2'        => 'r-kvstore.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'r-kvstore.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'r-kvstore.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'        => 'r-kvstore.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'r-kvstore.eu-west-1.aliyuncs.com',
+                    'us-west-1'             => 'r-kvstore.aliyuncs.com',
+                    'us-east-1'             => 'r-kvstore.aliyuncs.com',
+                    'eu-central-1'          => 'r-kvstore.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'r-kvstore.me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'r-kvstore.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'            => 'r-kvstore.cn-chengdu.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'r-kvstore.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'r-kvstore.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'r-kvstore.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'r-kvstore.aliyuncs.com',
+                    'cn-heyuan'             => 'r-kvstore.aliyuncs.com',
+                    'cn-wulanchabu'         => 'r-kvstore.aliyuncs.com',
+                ],
+            'nas'             =>
+                [
+                    'cn-qingdao'            => 'nas.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'nas.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'nas.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'nas.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'nas.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'nas.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'nas.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'           => 'nas.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1'        => 'nas.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'        => 'nas.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'nas.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'nas.ap-southeast-5.aliyuncs.com',
+                    'us-east-1'             => 'nas.us-east-1.aliyuncs.com',
+                    'eu-central-1'          => 'nas.eu-central-1.aliyuncs.com',
+                    'ap-south-1'            => 'nas.ap-south-1.aliyuncs.com',
+                    'ap-northeast-1'        => 'nas.ap-northeast-1.aliyuncs.com',
+                    'us-west-1'             => 'nas.us-west-1.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'nas.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'nas.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'nas.cn-north-2-gov-1.aliyuncs.com',
+                    'eu-west-1'             => 'nas.eu-west-1.aliyuncs.com',
+                    'cn-chengdu'            => 'nas.cn-chengdu.aliyuncs.com',
+                    'cn-heyuan'             => 'nas.cn-heyuan.aliyuncs.com',
+                ],
+            'hbase'           =>
+                [
+                    'cn-qingdao'            => 'hbase.aliyuncs.com',
+                    'cn-beijing'            => 'hbase.aliyuncs.com',
+                    'cn-huhehaote'          => 'hbase.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'hbase.aliyuncs.com',
+                    'cn-shanghai'           => 'hbase.aliyuncs.com',
+                    'cn-shenzhen'           => 'hbase.aliyuncs.com',
+                    'ap-southeast-1'        => 'hbase.aliyuncs.com',
+                    'ap-southeast-2'        => 'hbase.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'hbase.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'hbase.ap-southeast-5.aliyuncs.com',
+                    'us-west-1'             => 'hbase.aliyuncs.com',
+                    'us-east-1'             => 'hbase.aliyuncs.com',
+                    'eu-central-1'          => 'hbase.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'hbase.me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'hbase.ap-south-1.aliyuncs.com',
+                    'eu-west-1'             => 'hbase.eu-west-1.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'hbase.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'hbase.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'hbase.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'hbase.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'hbase.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hongkong'           => 'hbase.aliyuncs.com',
+                    'ap-northeast-1'        => 'hbase.ap-northeast-1.aliyuncs.com',
+                ],
+            'ddosbasic'       =>
+                [
+                    'cn-qingdao'            => 'antiddos.aliyuncs.com',
+                    'cn-beijing'            => 'antiddos.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'antiddos-openapi.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'antiddos-openapi.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'antiddos.aliyuncs.com',
+                    'cn-shanghai'           => 'antiddos.aliyuncs.com',
+                    'cn-shenzhen'           => 'antiddos.aliyuncs.com',
+                    'cn-hongkong'           => 'antiddos.aliyuncs.com',
+                    'ap-southeast-1'        => 'antiddos.aliyuncs.com',
+                    'ap-southeast-2'        => 'antiddos-openapi.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'antiddos-openapi.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'antiddos-openapi.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'        => 'antiddos-openapi.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'antiddos-openapi.eu-west-1.aliyuncs.com',
+                    'us-west-1'             => 'antiddos.aliyuncs.com',
+                    'us-east-1'             => 'antiddos.aliyuncs.com',
+                    'eu-central-1'          => 'antiddos-openapi.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'antiddos-openapi.me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'antiddos-openapi.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'            => 'antiddos-openapi.cn-chengdu.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'antiddos.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'antiddos.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'antiddos.aliyuncs.com',
+                    'cn-fujian'             => 'antiddos.aliyuncs.com',
+                    'cn-haidian-cm12-c01'   => 'antiddos.aliyuncs.com',
+                    'cn-heyuan'             => 'antiddos-openapi.cn-heyuan.aliyuncs.com',
+                    'cn-wulanchabu'         => 'antiddos-openapi.cn-wulanchabu.aliyuncs.com',
+                ],
+            'polardb'         =>
+                [
+                    'cn-qingdao'            => 'polardb.aliyuncs.com',
+                    'cn-beijing'            => 'polardb.aliyuncs.com',
+                    'cn-huhehaote'          => 'polardb.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'polardb.aliyuncs.com',
+                    'cn-shanghai'           => 'polardb.aliyuncs.com',
+                    'cn-shenzhen'           => 'polardb.aliyuncs.com',
+                    'cn-hongkong'           => 'polardb.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'polardb.cn-zhangjiakou.aliyuncs.com',
+                    'ap-southeast-1'        => 'polardb.aliyuncs.com',
+                    'ap-southeast-3'        => 'polardb.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'polardb.ap-southeast-5.aliyuncs.com',
+                    'us-west-1'             => 'polardb.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'polardb.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'polardb.aliyuncs.com',
+                    'eu-central-1'          => 'polardb.eu-central-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'polardb.aliyuncs.com',
+                    'ap-south-1'            => 'polardb.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'            => 'polardb.cn-chengdu.aliyuncs.com',
+                    'ap-northeast-1'        => 'polardb.ap-northeast-1.aliyuncs.com',
+                    'us-east-1'             => 'polardb.aliyuncs.com',
+                ],
+            'actiontrail'     =>
+                [
+                    'cn-qingdao'            => 'actiontrail.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'actiontrail.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'actiontrail.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'actiontrail.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'actiontrail.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'actiontrail.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'actiontrail.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'           => 'actiontrail.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1'        => 'actiontrail.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'        => 'actiontrail.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'actiontrail.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'actiontrail.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'        => 'actiontrail.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'actiontrail.eu-west-1.aliyuncs.com',
+                    'us-west-1'             => 'actiontrail.us-west-1.aliyuncs.com',
+                    'us-east-1'             => 'actiontrail.us-east-1.aliyuncs.com',
+                    'eu-central-1'          => 'actiontrail.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'actiontrail.me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'actiontrail.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'            => 'actiontrail.cn-chengdu.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'actiontrail.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'actiontrail.cn-north-2-gov-1.aliyuncs.com',
+                    'cn-heyuan'             => 'actiontrail.cn-heyuan.aliyuncs.com',
+                ],
+            'codepipeline'    =>
+                [
+                    'cn-beijing' => 'cds.cn-beijing.aliyuncs.com',
+                ],
+            'hcs_sgw'         =>
+                [
+                    'cn-beijing'       => 'sgw.cn-shanghai.aliyuncs.com',
+                    'cn-zhangjiakou'   => 'sgw.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'      => 'sgw.cn-shanghai.aliyuncs.com',
+                    'cn-shanghai'      => 'sgw.cn-shanghai.aliyuncs.com',
+                    'cn-hongkong'      => 'sgw.cn-shanghai.aliyuncs.com',
+                    'ap-southeast-1'   => 'sgw.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'   => 'sgw.ap-southeast-2.aliyuncs.com',
+                    'eu-central-1'     => 'sgw.eu-central-1.aliyuncs.com',
+                    'cn-qingdao'       => 'sgw.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'      => 'sgw.cn-shanghai.aliyuncs.com',
+                    'cn-huhehaote'     => 'sgw.cn-shanghai.aliyuncs.com',
+                    'cn-chengdu'       => 'sgw.cn-shanghai.aliyuncs.com',
+                    'ap-southeast-5'   => 'sgw.ap-southeast-5.aliyuncs.com',
+                    'ap-southeast-3'   => 'sgw.ap-southeast-3.aliyuncs.com',
+                    'ap-northeast-1'   => 'sgw.ap-northeast-1.aliyuncs.com',
+                    'us-west-1'        => 'sgw.us-west-1.aliyuncs.com',
+                    'us-east-1'        => 'sgw.us-west-1.aliyuncs.com',
+                    'cn-heyuan'        => 'sgw.cn-shanghai.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'sgw.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'openanalytics'   =>
+                [
+                    'cn-beijing'     => 'openanalytics.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'openanalytics.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'    => 'openanalytics.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'openanalytics.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'openanalytics.cn-shenzhen.aliyuncs.com',
+                    'ap-southeast-1' => 'openanalytics.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-3' => 'openanalytics.ap-southeast-3.aliyuncs.com',
+                    'eu-west-1'      => 'openanalytics.eu-west-1.aliyuncs.com',
+                    'cn-hongkong'    => 'openanalytics.cn-hongkong.aliyuncs.com',
+                    'us-west-1'      => 'openanalytics.us-west-1.aliyuncs.com',
+                    'ap-southeast-2' => 'datalakeanalytics.ap-southeast-2.aliyuncs.com',
+                    'ap-northeast-1' => 'datalakeanalytics.ap-northeast-1.aliyuncs.com',
+                    'us-east-1'      => 'datalakeanalytics.us-east-1.aliyuncs.com',
+                    'eu-central-1'   => 'datalakeanalytics.eu-central-1.aliyuncs.com',
+                    'ap-south-1'     => 'openanalytics.ap-south-1.aliyuncs.com',
+                    'ap-southeast-5' => 'openanalytics.ap-southeast-5.aliyuncs.com',
+                ],
+            'clouddesktop'    =>
+                [
+                    'cn-beijing'  => 'clouddesktop.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou' => 'clouddesktop.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'clouddesktop.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen' => 'clouddesktop.cn-shenzhen.aliyuncs.com',
+                ],
+            'ivision'         =>
+                [
+                    'cn-beijing'  => 'ivision.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou' => 'ivision.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'ivision.cn-shanghai.aliyuncs.com',
+                ],
+            'fc'              =>
+                [
+                    'cn-beijing'          => 'cn-beijing.fc.aliyuncs.com',
+                    'cn-hangzhou'         => 'cn-hangzhou.fc.aliyuncs.com',
+                    'cn-shanghai'         => 'cn-shanghai.fc.aliyuncs.com',
+                    'cn-shenzhen'         => 'cn-shenzhen.fc.aliyuncs.com',
+                    'ap-southeast-2'      => 'ap-southeast-2.fc.aliyuncs.com',
+                    'cn-huhehaote'        => 'cn-huhehaote.fc.aliyuncs.com',
+                    'cn-qingdao'          => 'cn-qingdao.fc.aliyuncs.com',
+                    'cn-chengdu'          => 'cn-chengdu.fc.aliyuncs.com',
+                    'cn-zhangjiakou'      => 'cn-zhangjiakou.fc.aliyuncs.com',
+                    'cn-hongkong'         => 'cn-hongkong.fc.aliyuncs.com',
+                    'ap-southeast-1'      => 'ap-southeast-1.fc.aliyuncs.com',
+                    'ap-southeast-3'      => 'ap-southeast-3.fc.aliyuncs.com',
+                    'ap-southeast-5'      => 'ap-southeast-5.fc.aliyuncs.com',
+                    'ap-northeast-1'      => 'ap-northeast-1.fc.aliyuncs. com',
+                    'eu-west-1'           => 'eu-west-1.fc.aliyuncs.com',
+                    'us-west-1'           => 'us-west-1.fc.aliyuncs.com',
+                    'us-east-1'           => 'us-east-1.fc.aliyuncs.com',
+                    'eu-central-1'        => 'eu-central-1.fc.aliyuncs.com',
+                    'ap-south-1'          => 'ap-south-1.fc.aliyuncs.com',
+                    'cn-hangzhou-finance' => 'cn-hangzhou-finance.fc.aliyuncs.com',
+                ],
+            'hsm'             =>
+                [
+                    'cn-beijing'            => 'hsm.aliyuncs.com',
+                    'cn-hangzhou'           => 'hsm.aliyuncs.com',
+                    'cn-shanghai'           => 'hsm.aliyuncs.com',
+                    'cn-shenzhen'           => 'hsm.aliyuncs.com',
+                    'cn-hongkong'           => 'hsm.aliyuncs.com',
+                    'ap-southeast-1'        => 'hsm.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'hsm.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'hsm.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'hsm.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'hsm.aliyuncs.com',
+                    'cn-haidian-cm12-c01'   => 'hsm.aliyuncs.com',
+                    'cn-heyuan'             => 'hsm.aliyuncs.com',
+                    'ap-southeast-3'        => 'hsm.aliyuncs.com',
+                ],
+            'petadata'        =>
+                [
+                    'cn-beijing'              => 'petadata.aliyuncs.com',
+                    'cn-zhangjiakou'          => 'petadata.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'            => 'petadata.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'             => 'petadata.aliyuncs.com',
+                    'cn-shanghai'             => 'petadata.aliyuncs.com',
+                    'cn-shenzhen'             => 'petadata.aliyuncs.com',
+                    'ap-southeast-1'          => 'petadata.aliyuncs.com',
+                    'ap-southeast-2'          => 'petadata.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-5'          => 'petadata.ap-southeast-5.aliyuncs.com',
+                    'us-west-1'               => 'petadata.aliyuncs.com',
+                    'us-east-1'               => 'petadata.aliyuncs.com',
+                    'eu-central-1'            => 'petadata.eu-central-1.aliyuncs.com',
+                    'me-east-1'               => 'petadata.me-east-1.aliyuncs.com',
+                    'cn-hongkong'             => 'petadata.aliyuncs.com',
+                    'cn-qingdao'              => 'petadata.aliyuncs.com',
+                    'cn-shanghai-et2-b01'     => 'petadata.aliyuncs.com',
+                    'cn-zhangjiakou-na62-a01' => 'petadata.aliyuncs.com',
+                ],
+            'gpdb'            =>
+                [
+                    'cn-beijing'            => 'gpdb.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'gpdb.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'gpdb.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'gpdb.aliyuncs.com',
+                    'cn-shanghai'           => 'gpdb.aliyuncs.com',
+                    'cn-shenzhen'           => 'gpdb.aliyuncs.com',
+                    'ap-southeast-1'        => 'gpdb.aliyuncs.com',
+                    'ap-southeast-2'        => 'gpdb.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'gpdb.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'gpdb.ap-southeast-5.aliyuncs.com',
+                    'eu-west-1'             => 'gpdb.eu-west-1.aliyuncs.com',
+                    'us-west-1'             => 'gpdb.aliyuncs.com',
+                    'us-east-1'             => 'gpdb.aliyuncs.com',
+                    'eu-central-1'          => 'gpdb.eu-central-1.aliyuncs.com',
+                    'ap-south-1'            => 'gpdb.ap-south-1.aliyuncs.com',
+                    'ap-northeast-1'        => 'gpdb.ap-northeast-1.aliyuncs.com',
+                    'cn-hongkong'           => 'gpdb.aliyuncs.com',
+                    'cn-chengdu'            => 'gpdb.cn-chengdu.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'gpdb.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'gpdb.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'gpdb.aliyuncs.com',
+                ],
+            'eci'             =>
+                [
+                    'cn-beijing'                  => 'eci.aliyuncs.com',
+                    'cn-hangzhou'                 => 'eci.aliyuncs.com',
+                    'cn-shanghai'                 => 'eci.aliyuncs.com',
+                    'cn-shenzhen'                 => 'eci.aliyuncs.com',
+                    'ap-southeast-1'              => 'eci.aliyuncs.com',
+                    'us-west-1'                   => 'eci.aliyuncs.com',
+                    'cn-hongkong'                 => 'eci.aliyuncs.com',
+                    'cn-zhangjiakou'              => 'eci.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'                => 'eci.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-2'              => 'eci.ap-southeast-2.aliyuncs.com',
+                    'eu-west-1'                   => 'eci.eu-west-1.aliyuncs.com',
+                    'us-east-1'                   => 'eci.aliyuncs.com',
+                    'eu-central-1'                => 'eci.eu-central-1.aliyuncs.com',
+                    'cn-chengdu'                  => 'eci.cn-chengdu.aliyuncs.com',
+                    'ap-southeast-5'              => 'eci.ap-southeast-5.aliyuncs.com',
+                    'ap-south-1'                  => 'eci.ap-south-1.aliyuncs.com',
+                    'cn-hangzhou-internal-test-1' => 'eci.aliyuncs.com',
+                    'cn-hangzhou-internal-test-2' => 'eci.aliyuncs.com',
+                    'cn-qingdao'                  => 'eci.aliyuncs.com',
+                    'cn-heyuan'                   => 'eci.cn-heyuan.aliyuncs.com',
+                    'cn-wulanchabu'               => 'eci.cn-wulanchabu.aliyuncs.com',
+                    'ap-southeast-3'              => 'eci.ap-southeast-3.aliyuncs.com',
+                    'ap-northeast-1'              => 'eci.ap-northeast-1.aliyuncs.com',
+                ],
+            'airec'           =>
+                [
+                    'cn-beijing'  => 'airec.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou' => 'airec.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'airec.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen' => 'airec.cn-shenzhen.aliyuncs.com',
+                ],
+            'imm'             =>
+                [
+                    'cn-beijing'     => 'imm.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'imm.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'    => 'imm.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'imm.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'imm.cn-shenzhen.aliyuncs.com',
+                    'ap-southeast-1' => 'imm.ap-southeast-1.aliyuncs.com',
+                ],
+            'gameshield'      =>
+                [
+                    'cn-zhangjiakou' => 'gameshield.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'    => 'gameshield.aliyuncs.com',
+                ],
+            'ims'             =>
+                [
+                    'cn-hangzhou' => 'ims.aliyuncs.com',
+                ],
+            'cloudfirewall'   =>
+                [
+                    'cn-hangzhou'    => 'cloudfw.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1' => 'cloudfw.ap-southeast-1.aliyuncs.com',
+                ],
+            'ens'             =>
+                [
+                    'cn-hangzhou'    => 'ens.aliyuncs.com',
+                    'ap-southeast-1' => 'ens.ap-southeast-1.aliyuncs.com',
+                    'cn-beijing'     => 'ens.aliyuncs.com',
+                    'cn-chengdu'     => 'ens.aliyuncs.com',
+                    'cn-zhangjiakou' => 'ens.aliyuncs.com',
+                    'cn-shanghai'    => 'ens.aliyuncs.com',
+                    'cn-heyuan'      => 'ens.aliyuncs.com',
+                    'cn-wulanchabu'  => 'ens.aliyuncs.com',
+                ],
+            'hitsdb'          =>
+                [
+                    'cn-hangzhou'           => 'hitsdb.aliyuncs.com',
+                    'cn-qingdao'            => 'hitsdb.aliyuncs.com',
+                    'cn-beijing'            => 'hitsdb.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'hitsdb.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'hitsdb.cn-huhehaote.aliyuncs.com',
+                    'cn-shanghai'           => 'hitsdb.aliyuncs.com',
+                    'cn-shenzhen'           => 'hitsdb.aliyuncs.com',
+                    'cn-hongkong'           => 'hitsdb.aliyuncs.com',
+                    'ap-southeast-5'        => 'hitsdb.ap-southeast-5.aliyuncs.com',
+                    'us-west-1'             => 'hitsdb.aliyuncs.com',
+                    'us-east-1'             => 'hitsdb.aliyuncs.com',
+                    'ap-southeast-1'        => 'hitsdb.aliyuncs.com',
+                    'ap-southeast-2'        => 'hitsdb.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'hitsdb.ap-southeast-3.aliyuncs.com',
+                    'ap-northeast-1'        => 'hitsdb.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'hitsdb.eu-west-1.aliyuncs.com',
+                    'eu-central-1'          => 'hitsdb.eu-central-1.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'hitsdb.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'hitsdb.aliyuncs.com',
+                ],
+            'ddos'            =>
+                [
+                    'cn-hangzhou' => 'ddospro.cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong' => 'ddospro.cn-hongkong.aliyuncs.com',
+                ],
+            'rtc'             =>
+                [
+                    'cn-hangzhou' => 'rtc.aliyuncs.com',
+                ],
+            'emas'            =>
+                [
+                    'cn-hangzhou' => 'mhub.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'mhub.cn-shanghai.aliyuncs.com',
+                ],
+            'vipaegis'        =>
+                [
+                    'cn-hangzhou'    => 'aegis.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-3' => 'aegis.ap-southeast-3.aliyuncs.com',
+                ],
+            'ddosrewards'     =>
+                [
+                    'cn-hangzhou' => 'ddosright.cn-hangzhou.aliyuncs.com',
+                ],
+            'cloudap'         =>
+                [
+                    'cn-hangzhou' => 'cloudwf.aliyuncs.com',
+                ],
+            'ensdisk'         =>
+                [
+                    'cn-hangzhou' => 'ens.aliyuncs.com',
+                ],
+            'bastionhost'     =>
+                [
+                    'cn-hangzhou'           => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-qingdao'            => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-beijing'            => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-chengdu'            => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-huhehaote'          => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-shanghai'           => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-shenzhen'           => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-hongkong'           => 'bastionhost.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1'        => 'bastionhost.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'        => 'bastionhost.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'bastionhost.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'bastionhost.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'        => 'bastionhost.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'bastionhost.eu-west-1.aliyuncs.com',
+                    'us-west-1'             => 'bastionhost.us-west-1.aliyuncs.com',
+                    'us-east-1'             => 'bastionhost.us-east-1.aliyuncs.com',
+                    'eu-central-1'          => 'bastionhost.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'yundun-bastionhost.aliyuncs.com',
+                    'ap-south-1'            => 'bastionhost.ap-south-1.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-haidian-cm12-c01'   => 'yundun-bastionhost.aliyuncs.com',
+                    'cn-heyuan'             => 'yundun-bastionhost.aliyuncs.com',
+                ],
+            'pvtz'            =>
+                [
+                    'cn-hangzhou' => 'pvtz.aliyuncs.com',
+                ],
+            'ccs'             =>
+                [
+                    'cn-hangzhou' => 'ccs.aliyuncs.com',
+                ],
+            'yunmarket'       =>
+                [
+                    'cn-hangzhou' => 'market.aliyuncs.com',
+                ],
+            'cas'             =>
+                [
+                    'cn-hangzhou'    => 'cas.aliyuncs.com',
+                    'ap-southeast-2' => 'cas.ap-southeast-2.aliyuncs.com',
+                    'ap-northeast-1' => 'cas.ap-northeast-1.aliyuncs.com',
+                    'eu-central-1'   => 'cas.eu-central-1.aliyuncs.com',
+                    'me-east-1'      => 'cas.me-east-1.aliyuncs.com',
+                    'ap-south-1'     => 'cas.ap-south-1.aliyuncs.com',
+                ],
+            'ddoscoo'         =>
+                [
+                    'cn-hangzhou'    => 'ddoscoo.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1' => 'ddoscoo.ap-southeast-1.aliyuncs.com',
+                ],
+            'waf'             =>
+                [
+                    'cn-hangzhou'           => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'        => 'wafopenapi.ap-southeast-1.aliyuncs.com',
+                    'cn-qingdao'            => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'            => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'cn-chengdu'            => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'cn-huhehaote'          => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'           => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'cn-heyuan'             => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'cn-wulanchabu'         => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'           => 'wafopenapi.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'        => 'wafopenapi.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-3'        => 'wafopenapi.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-5'        => 'wafopenapi.ap-southeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'wafopenapi.ap-southeast-1.aliyuncs.com',
+                    'us-west-1'             => 'wafopenapi.ap-southeast-1.aliyuncs.com',
+                    'us-east-1'             => 'wafopenapi.ap-southeast-1.aliyuncs.com',
+                    'eu-central-1'          => 'wafopenapi.ap-southeast-1.aliyuncs.com',
+                    'me-east-1'             => 'wafopenapi.ap-southeast-1.aliyuncs.com',
+                    'ap-south-1'            => 'wafopenapi.ap-southeast-1.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'wafopenapi.cn-hangzhou.aliyuncs.com',
+                ],
+            'xianzhi'         =>
+                [
+                    'cn-hangzhou' => 'xianzhi.aliyuncs.com',
+                ],
+            'sas'             =>
+                [
+                    'cn-hangzhou'    => 'tds.aliyuncs.com',
+                    'ap-southeast-3' => 'tds.ap-southeast-3.aliyuncs.com',
+                ],
+            'cloudauth'       =>
+                [
+                    'cn-hangzhou' => 'cloudauth.aliyuncs.com',
+                ],
+            'dmsenterprise'   =>
+                [
+                    'cn-hangzhou'    => 'dms-enterprise.aliyuncs.com',
+                    'cn-shanghai'    => 'dms-enterprise.aliyuncs.com',
+                    'cn-shenzhen'    => 'dms-enterprise.aliyuncs.com',
+                    'cn-beijing'     => 'dms-enterprise.aliyuncs.com',
+                    'cn-qingdao'     => 'dms-enterprise.aliyuncs.com',
+                    'ap-northeast-1' => 'dms-enterprise.aliyuncs.com',
+                    'ap-southeast-1' => 'dms-enterprise.aliyuncs.com',
+                ],
+            'baas'            =>
+                [
+                    'cn-hangzhou'      => 'baas.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'   => 'baas.ap-southeast-1.aliyuncs.com',
+                    'ap-northeast-1'   => 'baas.ap-southeast-1.aliyuncs.com',
+                    'cn-beijing'       => 'baas.aliyuncs.com',
+                    'cn-shanghai'      => 'baas.aliyuncs.com',
+                    'cn-shenzhen'      => 'baas.aliyuncs.com',
+                    'cn-hongkong'      => 'baas.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'   => 'baas.ap-southeast-1.aliyuncs.com',
+                    'us-east-1'        => 'baas.ap-southeast-1.aliyuncs.com',
+                    'eu-central-1'     => 'baas.ap-southeast-1.aliyuncs.com',
+                    'cn-qingdao'       => 'baas.aliyuncs.com',
+                    'cn-zhangjiakou'   => 'baas.aliyuncs.com',
+                    'cn-huhehaote'     => 'baas.aliyuncs.com',
+                    'eu-west-1'        => 'baas.ap-southeast-1.aliyuncs.com',
+                    'us-west-1'        => 'baas.ap-southeast-1.aliyuncs.com',
+                    'ap-south-1'       => 'baas.ap-southeast-1.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'baas.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'alimt'           =>
+                [
+                    'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com',
+                ],
+            'dcdn'            =>
+                [
+                    'cn-hangzhou' => 'dcdn.aliyuncs.com',
+                ],
+            'hcs_mgw'         =>
+                [
+                    'cn-hangzhou'    => 'mgw.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'mgw.cn-shanghai.aliyuncs.com',
+                    'ap-southeast-1' => 'mgw.ap-southeast-1.aliyuncs.com',
+                ],
+            'linkedmall'      =>
+                [
+                    'cn-hangzhou' => 'linkedmall.aliyuncs.com',
+                    'cn-shanghai' => 'linkedmall.aliyuncs.com',
+                ],
+            'cps'             =>
+                [
+                    'cn-hangzhou' => 'cloudpush.aliyuncs.com',
+                ],
+            'scdn'            =>
+                [
+                    'cn-hangzhou' => 'scdn.aliyuncs.com',
+                ],
+            'trademark'       =>
+                [
+                    'cn-hangzhou' => 'trademark.aliyuncs.com',
+                ],
+            'elasticsearch'   =>
+                [
+                    'cn-hangzhou'           => 'elasticsearch.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'elasticsearch.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'elasticsearch.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'           => 'elasticsearch.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1'        => 'elasticsearch.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'        => 'elasticsearch.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'elasticsearch.ap-southeast-3.aliyuncs.com',
+                    'ap-northeast-1'        => 'elasticsearch.ap-northeast-1.aliyuncs.com',
+                    'us-west-1'             => 'elasticsearch.us-west-1.aliyuncs.com',
+                    'eu-central-1'          => 'elasticsearch.eu-central-1.aliyuncs.com',
+                    'ap-south-1'            => 'elasticsearch.ap-south-1.aliyuncs.com',
+                    'cn-qingdao'            => 'elasticsearch.cn-qingdao.aliyuncs.com',
+                    'ap-southeast-5'        => 'elasticsearch.ap-southeast-5.aliyuncs.com',
+                    'cn-beijing'            => 'elasticsearch.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'elasticsearch.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'elasticsearch.cn-hangzhou-finance.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'elasticsearch.cn-shanghai-finance-1.aliyuncs.com',
+                    'us-east-1'             => 'elasticsearch.us-east-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'elasticsearch.cn-north-2-gov-1.aliyuncs.com',
+                    'eu-west-1'             => 'elasticsearch.eu-west-1.aliyuncs.com',
+                ],
+            'luban'           =>
+                [
+                    'cn-hangzhou' => 'luban.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'luban.cn-shanghai.aliyuncs.com',
+                ],
+            'pcdn'            =>
+                [
+                    'cn-hangzhou' => 'pcdn.aliyuncs.com',
+                ],
+            'uis'             =>
+                [
+                    'cn-hangzhou'      => 'uis.cn-hangzhou.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'uis.cn-hangzhou.aliyuncs.com',
+                ],
+            'beebot'          =>
+                [
+                    'cn-hangzhou'      => 'chatbot.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'      => 'chatbot.cn-shanghai.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'chatbot.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'chatbot'         =>
+                [
+                    'global'      => 'chatbot.cn-shanghai.aliyuncs.com',
+                    'cn-shanghai' => 'chatbot.cn-shanghai.aliyuncs.com',
+                ],
+            'alidnsgtm'       =>
+                [
+                    'cn-hangzhou' => 'alidns.aliyuncs.com',
+                ],
+            'sca'             =>
+                [
+                    'cn-hangzhou' => 'qualitycheck.cn-hangzhou.aliyuncs.com',
+                ],
+            'cccvn'           =>
+                [
+                    'cn-shanghai' => 'voicenavigator.cn-shanghai.aliyuncs.com',
+                ],
+            'cloudphoto'      =>
+                [
+                    'cn-shanghai' => 'cloudphoto.cn-shanghai.aliyuncs.com',
+                ],
+            'smartag'         =>
+                [
+                    'cn-shanghai'                 => 'smartag.cn-shanghai.aliyuncs.com',
+                    'cn-hongkong'                 => 'smartag.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1'              => 'smartag.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'              => 'smartag.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'              => 'smartag.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'              => 'smartag.ap-southeast-5.aliyuncs.com',
+                    'eu-central-1'                => 'smartag.eu-central-1.aliyuncs.com',
+                    'ap-northeast-1'              => 'smartag.ap-northeast-1.aliyuncs.com',
+                    'cn-shanghai-finance-1'       => 'smartag.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-hangzhou-internal-test-1' => 'smartag.aliyuncs.com',
+                    'cn-hangzhou-internal-test-2' => 'smartag.aliyuncs.com',
+                    'eu-west-1'                   => 'smartag.eu-west-1.aliyuncs.com',
+                    'us-east-1'                   => 'smartag.us-east-1.aliyuncs.com',
+                ],
+            'nlp'             =>
+                [
+                    'cn-shanghai' => 'nlp.cn-shanghai.aliyuncs.com',
+                ],
+            'nls-cloud-meta'  =>
+                [
+                    'cn-shanghai' => 'nls-meta.cn-shanghai.aliyuncs.com',
+                ],
+            'nls-filetrans'   =>
+                [
+                    'cn-shanghai' => 'filetrans.cn-shanghai.aliyuncs.com',
+                ],
+            'linkwan'         =>
+                [
+                    'cn-shanghai' => 'linkwan.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou' => 'linkwan.cn-hangzhou.aliyuncs.com',
+                ],
+            'hdm'             =>
+                [
+                    'cn-shanghai' => 'hdm-api.aliyuncs.com',
+                ],
+            'iovcc'           =>
+                [
+                    'cn-shanghai' => 'iovcc.cn-shanghai.aliyuncs.com',
+                ],
+            'ddosdip'         =>
+                [
+                    'ap-southeast-1' => 'ddosdip.ap-southeast-1.aliyuncs.com',
+                ],
+            'imagesearch'     =>
+                [
+                    'ap-southeast-1' => 'imagesearch.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2' => 'imagesearch.ap-southeast-2.aliyuncs.com',
+                    'ap-northeast-1' => 'imagesearch.ap-northeast-1.aliyuncs.com',
+                    'cn-shanghai'    => 'imagesearch.cn-shanghai.aliyuncs.com',
+                ],
+            'alidfs'          =>
+                [
+                    'cn-beijing'     => 'dfs.cn-beijing.aliyuncs.com',
+                    'cn-shanghai'    => 'dfs.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'    => 'dfs.cn-hangzhou.aliyuncs.com',
+                    'cn-zhangjiakou' => 'dfs.cn-zhangjiakou.aliyuncs.com',
+                ],
+            'vs'              =>
+                [
+                    'cn-hangzhou' => 'vs.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'vs.cn-shanghai.aliyuncs.com',
+                    'cn-qingdao'  => 'vs.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'  => 'vs.cn-beijing.aliyuncs.com',
+                    'cn-shenzhen' => 'vs.cn-shenzhen.aliyuncs.com',
+                ],
+            'foas'            =>
+                [
+                    'cn-qingdao'            => 'foas.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'foas.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'foas.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'           => 'foas.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'foas.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'foas.cn-shenzhen.aliyuncs.com',
+                    'ap-northeast-1'        => 'foas.ap-northeast-1.aliyuncs.com',
+                    'ap-southeast-1'        => 'foas.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-3'        => 'foas.ap-southeast-3.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'foas.cn-hangzhou-finance.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'foas.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'foas.cn-north-2-gov-1.aliyuncs.com',
+                    'cn-hongkong'           => 'foas.cn-hongkong.aliyuncs.com',
+                    'eu-central-1'          => 'foas.eu-central-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'foas.cn-shenzhen-finance-1.aliyuncs.com',
+                ],
+            'iotid'           =>
+                [
+                    'cn-hangzhou' => 'iotid.cn-hangzhou.aliyuncs.com',
+                ],
+            'drdspost'        =>
+                [
+                    'ap-southeast-1' => 'drds.ap-southeast-1.aliyuncs.com',
+                    'cn-shanghai'    => 'drds.cn-shanghai.aliyuncs.com',
+                    'cn-hongkong'    => 'drds.cn-hangzhou.aliyuncs.com',
+                    'cn-huhehaote'   => 'drds.cn-huhehaote.aliyuncs.com',
+                    'us-east-1'      => 'drds.us-east-1.aliyuncs.com',
+                ],
+            'drdspre'         =>
+                [
+                    'cn-qingdao'   => 'drds.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'   => 'drds.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou'  => 'drds.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'  => 'drds.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'  => 'drds.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'  => 'drds.cn-hangzhou.aliyuncs.com',
+                    'cn-huhehaote' => 'drds.cn-huhehaote.aliyuncs.com',
+                    'us-east-1'    => 'drds.us-east-1.aliyuncs.com',
+                ],
+            'acr'             =>
+                [
+                    'cn-qingdao'            => 'cr.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'cr.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'cr.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'cr.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'cr.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'cr.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'cr.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'           => 'cr.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1'        => 'cr.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'        => 'cr.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'cr.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'cr.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'        => 'cr.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'cr.eu-west-1.aliyuncs.com',
+                    'us-west-1'             => 'cr.us-west-1.aliyuncs.com',
+                    'us-east-1'             => 'cr.us-east-1.aliyuncs.com',
+                    'eu-central-1'          => 'cr.eu-central-1.aliyuncs.com',
+                    'me-east-1'             => 'cr.me-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'cr.ap-south-1.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'cr.cn-hangzhou-finance.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'cr.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'cr.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'cr.cn-north-2-gov-1.aliyuncs.com',
+                    'cn-chengdu'            => 'cr.cn-chengdu.aliyuncs.com',
+                ],
+            'faas'            =>
+                [
+                    'cn-beijing'            => 'faas.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'faas.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'           => 'faas.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'faas.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'faas.cn-shenzhen.aliyuncs.com',
+                    'ap-southeast-5'        => 'faas.ap-southeast-5.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'faas.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-chengdu'            => 'faas.cn-chengdu.aliyuncs.com',
+                    'cn-heyuan'             => 'faas.cn-heyuan.aliyuncs.com',
+                    'us-west-1'             => 'faas.us-west-1.aliyuncs.com',
+                ],
+            'idaas'           =>
+                [
+                    'cn-hangzhou'           => 'idaas.aliyuncs.com',
+                    'cn-qingdao'            => 'idaas.aliyuncs.com',
+                    'cn-beijing'            => 'idaas.aliyuncs.com',
+                    'cn-chengdu'            => 'idaas.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'idaas.aliyuncs.com',
+                    'cn-huhehaote'          => 'idaas.aliyuncs.com',
+                    'cn-shanghai'           => 'idaas.aliyuncs.com',
+                    'cn-shenzhen'           => 'idaas.aliyuncs.com',
+                    'cn-hongkong'           => 'idaas.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'idaas.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'idaas.aliyuncs.com',
+                    'ap-southeast-1'        => 'idaas.ap-southeast-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'idaas.aliyuncs.com',
+                ],
+            'privatelink'     =>
+                [
+                    'cn-hangzhou'                 => 'privatelink-center.cn-hangzhou.aliyuncs.com',
+                    'cn-huhehaote'                => 'privatelink.cn-huhehaote.aliyuncs.com',
+                    'eu-west-1'                   => 'privatelink.eu-west-1.aliyuncs.com',
+                    'ap-southeast-2'              => 'privatelink.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-5'              => 'privatelink.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'              => 'privatelink.ap-northeast-1.aliyuncs.com',
+                    'ap-south-1'                  => 'privatelink.ap-south-1.aliyuncs.com',
+                    'cn-shenzhen'                 => 'privatelink.cn-shenzhen.aliyuncs.com',
+                    'eu-central-1'                => 'privatelink.eu-central-1.aliyuncs.com',
+                    'cn-zhangjiakou'              => 'privatelink.cn-zhangjiakou.aliyuncs.com',
+                    'ap-southeast-3'              => 'privatelink.ap-southeast-3.aliyuncs.com',
+                    'cn-hangzhou-internal-test-1' => 'privatelink.aliyuncs.com',
+                    'cn-hangzhou-test-306'        => 'privatelink-center.cn-hangzhou.aliyuncs.com',
+                    'cn-chengdu'                  => 'privatelink.cn-chengdu.aliyuncs.com',
+                    'ap-southeast-1'              => 'privatelink.ap-southeast-1.aliyuncs.com',
+                ],
+            'batchcomputenew' =>
+                [
+                    'cn-hongkong' => 'batchcompute.cn-hongkong.aliyuncs.com',
+                ],
+            'vcs'             =>
+                [
+                    'cn-hangzhou' => 'vcs.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'vcs.cn-shanghai.aliyuncs.com',
+                ],
+            'vds'             =>
+                [
+                    'cn-hangzhou' => 'vds.aliyuncs.com',
+                    'cn-shanghai' => 'vds.cn-shanghai.aliyuncs.com',
+                ],
+            'vcsbasic'        =>
+                [
+                    'cn-hangzhou' => 'vcs.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'vcs.cn-hangzhou.aliyuncs.com',
+                ],
+            'hbr'             =>
+                [
+                    'cn-qingdao'            => 'hbr.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'hbr.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'hbr.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'hbr.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'hbr.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'hbr.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'hbr.cn-shenzhen.aliyuncs.com',
+                    'ap-southeast-1'        => 'hbr.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'        => 'hbr.ap-southeast-2.aliyuncs.com',
+                    'cn-hongkong'           => 'hbr.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-5'        => 'hbr.ap-southeast-5.aliyuncs.com',
+                    'ap-southeast-3'        => 'hbr.ap-southeast-3.aliyuncs.com',
+                    'us-west-1'             => 'hbr.us-west-1.aliyuncs.com',
+                    'eu-central-1'          => 'hbr.eu-central-1.aliyuncs.com',
+                    'ap-northeast-1'        => 'hbr.ap-northeast-1.aliyuncs.com',
+                    'cn-chengdu'            => 'hbr.cn-chengdu.aliyuncs.com',
+                    'us-east-1'             => 'hbr.us-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'hbr.ap-south-1.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'hbr.cn-hangzhou-finance.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'hbr.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'hbr.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'hbr.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'image'           =>
+                [
+                    'cn-shanghai' => 'image.cn-shanghai.aliyuncs.com',
+                ],
+            'webx'            =>
+                [
+                    'cn-shenzhen'    => 'webplus.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'     => 'webplus.cn-hangzhou.aliyuncs.com',
+                    'cn-zhangjiakou' => 'webplus.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'webplus.cn-hangzhou.aliyuncs.com',
+                    'cn-hangzhou'    => 'webplus.cn-hangzhou.aliyuncs.com',
+                ],
+            'sddp'            =>
+                [
+                    'cn-zhangjiakou'   => 'sddp.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'      => 'sddp.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'   => 'sddp.ap-southeast-1.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'sddp.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'oos'             =>
+                [
+                    'cn-hangzhou'    => 'oos.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'oos.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'oos.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'    => 'oos.cn-hongkong.aliyuncs.com',
+                    'us-east-1'      => 'oos.us-east-1.aliyuncs.com',
+                    'cn-beijing'     => 'oos.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'oos.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'oos.cn-huhehaote.aliyuncs.com',
+                    'eu-west-1'      => 'oos.eu-west-1.aliyuncs.com',
+                    'eu-central-1'   => 'oos.eu-central-1.aliyuncs.com',
+                    'ap-south-1'     => 'oos.ap-south-1.aliyuncs.com',
+                    'cn-chengdu'     => 'oos.cn-chengdu.aliyuncs.com',
+                    'ap-southeast-1' => 'oos.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2' => 'oos.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3' => 'oos.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5' => 'oos.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1' => 'oos.ap-northeast-1.aliyuncs.com',
+                ],
+            'fnf'             =>
+                [
+                    'cn-hangzhou' => 'cn-hangzhou.fnf.aliyuncs.com',
+                    'cn-shanghai' => 'cn-shanghai.fnf.aliyuncs.com',
+                    'cn-shenzhen' => 'cn-shenzhen.fnf.aliyuncs.com',
+                    'cn-beijing'  => 'cn-beijing.fnf.aliyuncs.com',
+                ],
+            'smc'             =>
+                [
+                    'cn-huhehaote'   => 'smc.aliyuncs.com',
+                    'cn-hangzhou'    => 'smc.aliyuncs.com',
+                    'cn-qingdao'     => 'smc.aliyuncs.com',
+                    'cn-beijing'     => 'smc.aliyuncs.com',
+                    'cn-zhangjiakou' => 'smc.aliyuncs.com',
+                    'cn-shanghai'    => 'smc.aliyuncs.com',
+                    'cn-shenzhen'    => 'smc.aliyuncs.com',
+                    'cn-hongkong'    => 'smc.aliyuncs.com',
+                    'ap-southeast-1' => 'smc.aliyuncs.com',
+                    'ap-southeast-2' => 'smc.aliyuncs.com',
+                    'ap-southeast-3' => 'smc.aliyuncs.com',
+                    'ap-southeast-5' => 'smc.aliyuncs.com',
+                    'ap-northeast-1' => 'smc.aliyuncs.com',
+                    'eu-west-1'      => 'smc.aliyuncs.com',
+                    'us-west-1'      => 'smc.aliyuncs.com',
+                    'us-east-1'      => 'smc.aliyuncs.com',
+                    'eu-central-1'   => 'smc.aliyuncs.com',
+                    'me-east-1'      => 'smc.aliyuncs.com',
+                    'ap-south-1'     => 'smc.aliyuncs.com',
+                    'cn-chengdu'     => 'smc.aliyuncs.com',
+                ],
+            'foasconsole'     =>
+                [
+                    'cn-beijing'            => 'foasconsole.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'foasconsole.aliyuncs.com',
+                    'cn-hangzhou'           => 'foasconsole.aliyuncs.com',
+                    'cn-shanghai'           => 'foasconsole.aliyuncs.com',
+                    'cn-shenzhen'           => 'foasconsole.aliyuncs.com',
+                    'cn-hongkong'           => 'foasconsole.aliyuncs.com',
+                    'ap-southeast-1'        => 'foasconsole.aliyuncs.com',
+                    'ap-southeast-3'        => 'foasconsole.aliyuncs.com',
+                    'ap-northeast-1'        => 'foasconsole.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'foasconsole.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'foasconsole.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'foasconsole.aliyuncs.com',
+                    'eu-central-1'          => 'foasconsole.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'foasconsole.aliyuncs.com',
+                ],
+            'serverless'      =>
+                [
+                    'cn-beijing'  => 'sae.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou' => 'sae.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'sae.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen' => 'sae.cn-shenzhen.aliyuncs.com',
+                    'us-west-1'   => 'sae.us-west-1.aliyuncs.com',
+                ],
+            'ivpd'            =>
+                [
+                    'cn-huhehaote'   => 'ivpd.cn-huhehaote.aliyuncs.com',
+                    'cn-shanghai'    => 'ivpd.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'    => 'ivpd.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'     => 'ivpd.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'ivpd.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hongkong'    => 'ivpd.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1' => 'ivpd.ap-southeast-1.aliyuncs.com',
+                ],
+            'hivisengine'     =>
+                [
+                    'cn-huhehaote' => 'hivisengine.aliyuncs.com',
+                    'cn-shanghai'  => 'hivisengine.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'  => 'hivisengine.cn-hangzhou.aliyuncs.com',
+                ],
+            'hiknoengine'     =>
+                [
+                    'cn-huhehaote' => 'hiknoengine.aliyuncs.com',
+                    'cn-shanghai'  => 'hiknoengine.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'  => 'hiknoengine.cn-hangzhou.aliyuncs.com',
+                ],
+            'clouddev'        =>
+                [
+                    'cn-hangzhou' => 'mpserverless.aliyuncs.com',
+                    'cn-shanghai' => 'mpserverless.aliyuncs.com',
+                ],
+            'premiumpics'     =>
+                [
+                    'cn-hangzhou' => 'premiumpics.aliyuncs.com',
+                ],
+            'composer'        =>
+                [
+                    'cn-hangzhou'    => 'composer.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'composer.cn-shanghai.aliyuncs.com',
+                    'us-east-1'      => 'composer.us-east-1.aliyuncs.com',
+                    'ap-southeast-1' => 'composer.ap-southeast-1.aliyuncs.com',
+                ],
+            'cloudesl'        =>
+                [
+                    'cn-hangzhou' => 'cloudesl.cn-hangzhou.aliyuncs.com',
+                ],
+            'amscloudapp'     =>
+                [
+                    'cn-hangzhou' => 'mpca.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'mpca.cn-shanghai.aliyuncs.com',
+                ],
+            'mse'             =>
+                [
+                    'cn-hangzhou'           => 'mse.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'mse.cn-shanghai.aliyuncs.com',
+                    'cn-beijing'            => 'mse.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'mse.cn-zhangjiakou.aliyuncs.com',
+                    'cn-shenzhen'           => 'mse.cn-shenzhen.aliyuncs.com',
+                    'us-east-1'             => 'mse.us-east-1.aliyuncs.com',
+                    'ap-southeast-1'        => 'mse.ap-southeast-1.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'msefinance-share.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'msefinance-share.cn-shenzhen-finance-1.aliyuncs.com',
+                ],
+            'dg'              =>
+                [
+                    'cn-hangzhou' => 'dg.cn-hangzhou.aliyuncs.com',
+                ],
+            'graphcompute'    =>
+                [
+                    'cn-shanghai' => 'gcs.cn-shanghai.aliyuncs.com',
+                ],
+            'cds'             =>
+                [
+                    'ap-southeast-1' => 'cassandra.aliyuncs.com',
+                    'cn-qingdao'     => 'cassandra.aliyuncs.com',
+                    'cn-beijing'     => 'cassandra.aliyuncs.com',
+                    'cn-hangzhou'    => 'cassandra.aliyuncs.com',
+                    'cn-shanghai'    => 'cassandra.aliyuncs.com',
+                    'cn-shenzhen'    => 'cassandra.aliyuncs.com',
+                    'cn-hongkong'    => 'cassandra.aliyuncs.com',
+                    'cn-chengdu'     => 'cassandra.aliyuncs.com',
+                    'cn-zhangjiakou' => 'cassandra.aliyuncs.com',
+                    'cn-huhehaote'   => 'cassandra.aliyuncs.com',
+                    'ap-southeast-2' => 'cassandra.aliyuncs.com',
+                    'ap-southeast-3' => 'cassandra.aliyuncs.com',
+                    'ap-southeast-5' => 'cassandra.aliyuncs.com',
+                    'eu-west-1'      => 'cassandra.aliyuncs.com',
+                    'us-west-1'      => 'cassandra.aliyuncs.com',
+                    'us-east-1'      => 'cassandra.aliyuncs.com',
+                    'eu-central-1'   => 'cassandra.aliyuncs.com',
+                    'me-east-1'      => 'cassandra.aliyuncs.com',
+                    'ap-south-1'     => 'cassandra.aliyuncs.com',
+                    'ap-northeast-1' => 'cassandra.aliyuncs.com',
+                ],
+            'ads'             =>
+                [
+                    'cn-qingdao'            => 'adb.aliyuncs.com',
+                    'cn-beijing'            => 'adb.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'adb.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'           => 'adb.aliyuncs.com',
+                    'cn-shanghai'           => 'adb.aliyuncs.com',
+                    'cn-shenzhen'           => 'adb.aliyuncs.com',
+                    'cn-hongkong'           => 'adb.aliyuncs.com',
+                    'ap-southeast-1'        => 'adb.aliyuncs.com',
+                    'ap-northeast-1'        => 'adb.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'             => 'adb.eu-west-1.aliyuncs.com',
+                    'us-west-1'             => 'adb.aliyuncs.com',
+                    'us-east-1'             => 'adb.aliyuncs.com',
+                    'ap-southeast-2'        => 'adb.ap-southeast-2.aliyuncs.com',
+                    'eu-central-1'          => 'adb.eu-central-1.aliyuncs.com',
+                    'ap-south-1'            => 'adb.ap-south-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'adb.aliyuncs.com',
+                    'cn-chengdu'            => 'adb.cn-chengdu.aliyuncs.com',
+                    'cn-huhehaote'          => 'adb.cn-huhehaote.aliyuncs.com',
+                    'ap-southeast-3'        => 'adb.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'adb.ap-southeast-5.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'adb.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'adb.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'adb.aliyuncs.com',
+                ],
+            'csb'             =>
+                [
+                    'cn-beijing'       => 'csb.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou'      => 'csb.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'      => 'csb.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'      => 'csb.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'      => 'csb.cn-hongkong.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'csb.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'cityvisual'      =>
+                [
+                    'cn-hangzhou' => 'cityvisual.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'cityvisual.cn-shanghai.aliyuncs.com',
+                ],
+            'dbaudit'         =>
+                [
+                    'cn-hangzhou'           => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-qingdao'            => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-beijing'            => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-huhehaote'          => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-shanghai'           => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-shenzhen'           => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-hongkong'           => 'yundun-dbaudit.aliyuncs.com',
+                    'ap-southeast-1'        => 'yundun-dbaudit.aliyuncs.com',
+                    'ap-southeast-2'        => 'yundun-dbaudit.aliyuncs.com',
+                    'ap-southeast-3'        => 'yundun-dbaudit.aliyuncs.com',
+                    'ap-southeast-5'        => 'yundun-dbaudit.aliyuncs.com',
+                    'ap-northeast-1'        => 'yundun-dbaudit.aliyuncs.com',
+                    'us-west-1'             => 'yundun-dbaudit.aliyuncs.com',
+                    'us-east-1'             => 'yundun-dbaudit.aliyuncs.com',
+                    'eu-central-1'          => 'yundun-dbaudit.aliyuncs.com',
+                    'me-east-1'             => 'yundun-dbaudit.aliyuncs.com',
+                    'ap-south-1'            => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-chengdu'            => 'yundun-dbaudit.aliyuncs.com',
+                    'eu-west-1'             => 'yundun-dbaudit.aliyuncs.com',
+                    'cn-huhehaote-nebula-1' => 'yundun-dbaudit.aliyuncs.com',
+                ],
+            'bssopenapi'      =>
+                [
+                    'cn-hangzhou'    => 'business.aliyuncs.com',
+                    'cn-shanghai'    => 'business.aliyuncs.com',
+                    'ap-southeast-1' => 'business.ap-southeast-1.aliyuncs.com',
+                ],
+            'indvi'           =>
+                [
+                    'cn-hangzhou' => 'indvi.cn-hangzhou.aliyuncs.com',
+                ],
+            'swcopyright'     =>
+                [
+                    'cn-hangzhou' => 'copyright.aliyuncs.com',
+                ],
+            'multimediaai'    =>
+                [
+                    'cn-beijing'  => 'multimediaai.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou' => 'multimediaai.cn-hangzhou.aliyuncs.com',
+                ],
+            'rsimganalys'     =>
+                [
+                    'cn-hangzhou' => 'rsimganalys.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'rsimganalys.cn-shanghai.aliyuncs.com',
+                ],
+            'tdsr'            =>
+                [
+                    'cn-hangzhou' => 'lyj.cn-hangzhou.aliyuncs.com',
+                ],
+            'eslogstash'      =>
+                [
+                    'cn-qingdao'     => 'elasticsearch.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'     => 'elasticsearch.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'elasticsearch.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'    => 'elasticsearch.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'elasticsearch.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'elasticsearch.cn-shenzhen.aliyuncs.com',
+                ],
+            'vcoverimage'     =>
+                [
+                    'cn-beijing'  => 'vcoverimage.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou' => 'vcoverimage.cn-hangzhou.aliyuncs.com',
+                ],
+            'ahas'            =>
+                [
+                    'cn-beijing'     => 'ahas.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou'    => 'ahas.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'ahas.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'ahas.cn-shenzhen.aliyuncs.com',
+                    'cn-zhangjiakou' => 'ahas.cn-zhangjiakou.aliyuncs.com',
+                ],
+            'vstruction'      =>
+                [
+                    'cn-beijing'  => 'vstruction.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou' => 'vstruction.cn-hangzhou.aliyuncs.com',
+                ],
+            'vcovergif'       =>
+                [
+                    'cn-beijing'  => 'vcovergif.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou' => 'vcovergif.cn-hangzhou.aliyuncs.com',
+                ],
+            'aiccs'           =>
+                [
+                    'cn-hangzhou' => 'aiccs.aliyuncs.com',
+                ],
+            'nls'             =>
+                [
+                    'cn-shanghai' => 'nls-slp.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou' => 'nls-slp.cn-shanghai.aliyuncs.com',
+                ],
+            'antcloudauth'    =>
+                [
+                    'cn-shanghai' => 'antcloudauth.cn-shanghai.aliyuncs.com',
+                ],
+            'prepaid_ads'     =>
+                [
+                    'cn-hangzhou-finance'   => 'ads.cn-hangzhou-finance.aliyuncs.com',
+                    'cn-beijing'            => 'ads.cn-beijing.aliyuncs.com',
+                    'cn-chengdu'            => 'ads.cn-chengdu.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'ads.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'           => 'ads.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'ads.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'ads.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'           => 'ads.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1'        => 'ads.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-3'        => 'ads.ap-southeast-3.aliyuncs.com',
+                    'ap-northeast-1'        => 'ads-share.ap-northeast-1.aliyuncs.com',
+                    'us-west-1'             => 'ads.us-west-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'ads.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'ads.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'hdr'             =>
+                [
+                    'cn-qingdao'     => 'hdr.cn-shanghai.aliyuncs.com',
+                    'cn-beijing'     => 'hdr.cn-shanghai.aliyuncs.com',
+                    'cn-zhangjiakou' => 'hdr.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou'    => 'hdr.cn-shanghai.aliyuncs.com',
+                    'cn-shanghai'    => 'hdr.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'hdr.cn-shanghai.aliyuncs.com',
+                    'cn-hongkong'    => 'hdr.cn-shanghai.aliyuncs.com',
+                    'cn-chengdu'     => 'hdr.cn-shanghai.aliyuncs.com',
+                ],
+            'cbs'             =>
+                [
+                    'cn-qingdao'            => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-beijing'            => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-huhehaote'          => 'dbs-api.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'           => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-hongkong'           => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'        => 'dbs-api.ap-southeast-1.aliyuncs.com',
+                    'ap-northeast-1'        => 'dbs-api.ap-northeast-1.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'cn-chengdu'            => 'dbs-api.cn-chengdu.aliyuncs.com',
+                    'ap-southeast-2'        => 'dbs-api.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'dbs-api.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'dbs-api.ap-southeast-5.aliyuncs.com',
+                    'us-west-1'             => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'us-east-1'             => 'dbs-api.cn-hangzhou.aliyuncs.com',
+                    'eu-central-1'          => 'dbs-api.eu-central-1.aliyuncs.com',
+                ],
+            'datag'           =>
+                [
+                    'cn-beijing' => 'datag.cn-beijing.aliyuncs.com',
+                ],
+            'retailir'        =>
+                [
+                    'cn-hangzhou' => 'retailir.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'retailir.cn-shanghai.aliyuncs.com',
+                ],
+            'mpaas'           =>
+                [
+                    'cn-hangzhou' => 'mpaas.aliyuncs.com',
+                ],
+            'iqa'             =>
+                [
+                    'cn-hangzhou' => 'iqa.cn-hangzhou.aliyuncs.com',
+                ],
+            'sofa'            =>
+                [
+                    'cn-hangzhou'         => 'sofa.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'         => 'sofa.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou-finance' => 'sofa.cn-shanghai.aliyuncs.com',
+                ],
+            'edas'            =>
+                [
+                    'cn-hangzhou'      => 'edas.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'      => 'edas.cn-shanghai.aliyuncs.com',
+                    'cn-qingdao'       => 'edas.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'       => 'edas.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'   => 'edas.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'      => 'edas.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'      => 'edas.cn-shanghai.aliyuncs.com',
+                    'ap-southeast-1'   => 'edas.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'   => 'edas.ap-southeast-1.aliyuncs.com',
+                    'us-east-1'        => 'edas.ap-southeast-1.aliyuncs.com',
+                    'eu-central-1'     => 'edas.ap-southeast-1.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'edas.cn-shanghai.aliyuncs.com',
+                ],
+            'gwsservice'      =>
+                [
+                    'cn-shanghai'    => 'gws.cn-shanghai.aliyuncs.com',
+                    'cn-beijing'     => 'gws.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'gws.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'gws.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'    => 'gws.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen'    => 'gws.cn-shenzhen.aliyuncs.com',
+                    'cn-chengdu'     => 'gws.cn-chengdu.aliyuncs.com',
+                    'ap-southeast-1' => 'gws.ap-southeast-1.aliyuncs.com',
+                    'cn-hongkong'    => 'gws.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-2' => 'gws.ap-southeast-2.aliyuncs.com',
+                    'us-west-1'      => 'gws.us-west-1.aliyuncs.com',
+                    'us-east-1'      => 'gws.us-east-1.aliyuncs.com',
+                    'eu-central-1'   => 'gws.eu-central-1.aliyuncs.com',
+                    'ap-south-1'     => 'gws.ap-south-1.aliyuncs.com',
+                    'cn-qingdao'     => 'gws.cn-qingdao.aliyuncs.com',
+                    'ap-southeast-3' => 'gws.ap-northeast-3.aliyuncs.com',
+                    'ap-southeast-5' => 'gws.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1' => 'gws.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'      => 'gws.eu-west-1.aliyuncs.com',
+                ],
+            'gds'             =>
+                [
+                    'ap-southeast-1' => 'gdb-api.aliyuncs.com',
+                    'cn-beijing'     => 'gdb-api.aliyuncs.com',
+                    'cn-zhangjiakou' => 'gdb-api.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'    => 'gdb-api.aliyuncs.com',
+                    'cn-shanghai'    => 'gdb-api.aliyuncs.com',
+                    'cn-shenzhen'    => 'gdb-api.aliyuncs.com',
+                    'ap-southeast-5' => 'gdb-api.ap-southeast-5.aliyuncs.com',
+                    'cn-qingdao'     => 'gdb-api.aliyuncs.com',
+                    'cn-chengdu'     => 'gdb-api.cn-chengdu.aliyuncs.com',
+                    'cn-huhehaote'   => 'gdb-api.cn-huhehaote.aliyuncs.com',
+                    'cn-hongkong'    => 'gdb-api.aliyuncs.com',
+                    'ap-southeast-2' => 'gdb-api.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3' => 'gdb-api.ap-southeast-3.aliyuncs.com',
+                    'eu-west-1'      => 'gdb-api.eu-west-1.aliyuncs.com',
+                    'us-west-1'      => 'gdb-api.aliyuncs.com',
+                    'us-east-1'      => 'gdb-api.aliyuncs.com',
+                    'eu-central-1'   => 'gdb-api.eu-central-1.aliyuncs.com',
+                    'me-east-1'      => 'gdb-api.me-east-1.aliyuncs.com',
+                    'ap-south-1'     => 'gdb-api.ap-south-1.aliyuncs.com',
+                ],
+            'eais'            =>
+                [
+                    'cn-beijing'  => 'eais.cn-beijing.aliyuncs.com',
+                    'cn-shenzhen' => 'eais.cn-shenzhen.aliyuncs.com',
+                ],
+            'clickhouse'      =>
+                [
+                    'cn-beijing'     => 'clickhouse.aliyuncs.com',
+                    'cn-hangzhou'    => 'clickhouse.aliyuncs.com',
+                    'cn-shanghai'    => 'clickhouse.aliyuncs.com',
+                    'cn-shenzhen'    => 'clickhouse.aliyuncs.com',
+                    'ap-southeast-1' => 'clickhouse.aliyuncs.com',
+                ],
+            'msepost'         =>
+                [
+                    'cn-beijing'     => 'mse.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'mse.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'    => 'mse.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'mse.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'mse.cn-shenzhen.aliyuncs.com',
+                    'us-east-1'      => 'mse.us-east-1.aliyuncs.com',
+                ],
+            'visionai'        =>
+                [
+                    'cn-beijing'  => 'visionai.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou' => 'visionai.cn-hangzhou.aliyuncs.com',
+                ],
+            'mseprepaid'      =>
+                [
+                    'cn-beijing'     => 'mse.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'mse.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'    => 'mse.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'mse.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'mse.cn-shenzhen.aliyuncs.com',
+                    'us-east-1'      => 'mse.us-east-1.aliyuncs.com',
+                ],
+            'adam'            =>
+                [
+                    'cn-beijing' => 'adam.cn-beijing.aliyuncs.com',
+                ],
+            'onsmqtt'         =>
+                [
+                    'cn-beijing'            => 'onsmqtt.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'onsmqtt.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'onsmqtt.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'onsmqtt.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'onsmqtt.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'onsmqtt.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'           => 'onsmqtt.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1'        => 'onsmqtt.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'        => 'onsmqtt.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'        => 'onsmqtt.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'        => 'onsmqtt.ap-southeast-5.aliyuncs.com',
+                    'us-west-1'             => 'onsmqtt.us-west-1.aliyuncs.com',
+                    'eu-central-1'          => 'onsmqtt.eu-central-1.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'onsmqtt.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'onsmqtt.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-qingdao'            => 'onsmqtt.cn-qingdao.aliyuncs.com',
+                    'ap-northeast-1'        => 'onsmqtt.ap-northeast-1.aliyuncs.com',
+                    'cn-chengdu'            => 'onsmqtt.cn-chengdu.aliyuncs.com',
+                    'us-east-1'             => 'onsmqtt.us-east-1.aliyuncs.com',
+                    'ap-south-1'            => 'onsmqtt.ap-south-1.aliyuncs.com',
+                ],
+            'dypls'           =>
+                [
+                    'cn-hangzhou' => 'dyplsapi.aliyuncs.com',
+                ],
+            'resourcemanager' =>
+                [
+                    'cn-hangzhou' => 'resourcemanager.aliyuncs.com',
+                    'cn-shanghai' => 'resourcemanager.aliyuncs.com',
+                ],
+            'nlpautoml'       =>
+                [
+                    'cn-hangzhou' => 'nlp-automl.cn-hangzhou.aliyuncs.com',
+                ],
+            'companyreg'      =>
+                [
+                    'cn-hangzhou' => 'companyreg.aliyuncs.com',
+                ],
+            'aliyuncvc'       =>
+                [
+                    'cn-hangzhou' => 'aliyuncvc.cn-hangzhou.aliyuncs.com',
+                ],
+            'alimtautoml'     =>
+                [
+                    'cn-hangzhou' => 'alimtautoml.cn-hangzhou.aliyuncs.com',
+                ],
+            'dbfs'            =>
+                [
+                    'cn-hangzhou'    => 'dbfs.cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao'     => 'dbfs.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'     => 'dbfs.cn-beijing.aliyuncs.com',
+                    'cn-chengdu'     => 'dbfs.cn-chengdu.aliyuncs.com',
+                    'cn-zhangjiakou' => 'dbfs.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'dbfs.cn-huhehaote.aliyuncs.com',
+                    'cn-shanghai'    => 'dbfs.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'dbfs.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'    => 'dbfs.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1' => 'dbfs.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2' => 'dbfs.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3' => 'dbfs.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5' => 'dbfs.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1' => 'dbfs.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'      => 'dbfs.eu-west-1.aliyuncs.com',
+                    'us-west-1'      => 'dbfs.us-west-1.aliyuncs.com',
+                    'us-east-1'      => 'dbfs.us-east-1.aliyuncs.com',
+                    'eu-central-1'   => 'dbfs.eu-central-1.aliyuncs.com',
+                    'me-east-1'      => 'dbfs.me-east-1.aliyuncs.com',
+                    'ap-south-1'     => 'dbfs.ap-south-1.aliyuncs.com',
+                    'cn-heyuan'      => 'dbfs.cn-heyuan.aliyuncs.com',
+                ],
+            'addrp'           =>
+                [
+                    'cn-hangzhou' => 'address-purification.cn-hangzhou.aliyuncs.com',
+                ],
+            'gaplus'          =>
+                [
+                    'cn-hangzhou'    => 'ga.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1' => 'ga.cn-hangzhou.aliyuncs.com',
+                ],
+            'datav'           =>
+                [
+                    'cn-hangzhou' => 'datav.cn-hangzhou.aliyuncs.com',
+                ],
+            'ocr'             =>
+                [
+                    'cn-shanghai' => 'ocr.cn-shanghai.aliyuncs.com',
+                ],
+            'objectdet'       =>
+                [
+                    'cn-shanghai' => 'objectdet.cn-shanghai.aliyuncs.com',
+                ],
+            'assetservice'    =>
+                [
+                    'cn-shanghai' => 'assettech.cn-shanghai.aliyuncs.com',
+                ],
+            'imageenhan'      =>
+                [
+                    'cn-shanghai' => 'imageenhan.cn-shanghai.aliyuncs.com',
+                ],
+            'imageaudit'      =>
+                [
+                    'cn-shanghai' => 'imageaudit.cn-shanghai.aliyuncs.com',
+                ],
+            'imagerecog'      =>
+                [
+                    'cn-shanghai' => 'imagerecog.cn-shanghai.aliyuncs.com',
+                ],
+            'imageseg'        =>
+                [
+                    'cn-shanghai' => 'imageseg.cn-shanghai.aliyuncs.com',
+                ],
+            'goodstech'       =>
+                [
+                    'cn-shanghai' => 'goodstech.cn-shanghai.aliyuncs.com',
+                ],
+            'facebody'        =>
+                [
+                    'cn-shanghai' => 'facebody.cn-shanghai.aliyuncs.com',
+                ],
+            'voicebot'        =>
+                [
+                    'cn-hangzhou' => 'voicenavigator.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'voicenavigator.cn-shanghai.aliyuncs.com',
+                ],
+            'dyiot'           =>
+                [
+                    'cn-hangzhou' => 'dyiotapi.aliyuncs.com',
+                ],
+            'drp'             =>
+                [
+                    'cn-hangzhou' => 'drp-share.cn-hangzhou.aliyuncs.com',
+                ],
+            'uem'             =>
+                [
+                    'cn-hangzhou' => 'uem.aliyuncs.com',
+                ],
+            'outboundbot'     =>
+                [
+                    'cn-hangzhou' => 'outboundbot.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'outboundbot.cn-shanghai.aliyuncs.com',
+                ],
+            'hcs_hgw'         =>
+                [
+                    'cn-shanghai' => 'hgw.cn-shanghai.aliyuncs.com',
+                ],
+            'acms'            =>
+                [
+                    'cn-qingdao'            => 'acm.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'acm.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'acm.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'           => 'acm.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'acm.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'acm.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'           => 'acm.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1'        => 'acm.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2'        => 'acm.ap-southeast-2.aliyuncs.com',
+                    'us-west-1'             => 'acm.us-west-1.aliyuncs.com',
+                    'us-east-1'             => 'acm.us-east-1.aliyuncs.com',
+                    'eu-central-1'          => 'acm.eu-central-1.aliyuncs.com',
+                    'cn-hangzhou-finance'   => 'acm.cn-hangzhou-finance.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'acm.cn-shanghai-finance-1.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'acm.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'acm.cn-north-2-gov-1.aliyuncs.com',
+                    'ap-south-1'            => 'acm.ap-south-1.aliyuncs.com',
+                ],
+            'onsproxy'        =>
+                [
+                    'cn-qingdao'     => 'amqp-open.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'     => 'amqp-open.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou'    => 'amqp-open.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'amqp-open.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'amqp-open.cn-shenzhen.aliyuncs.com',
+                    'cn-zhangjiakou' => 'amqp-open.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'amqp-open.cn-huhehaote.aliyuncs.com',
+                    'cn-hongkong'    => 'amqp-open.cn-hongkong.aliyuncs.com',
+                ],
+            'drdsro'          =>
+                [
+                    'cn-qingdao'            => 'drds.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'            => 'drds.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'        => 'drds.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'          => 'drds.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'           => 'drds.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'           => 'drds.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'           => 'drds.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'           => 'drds.cn-hangzhou.aliyuncs.com',
+                    'ap-southeast-1'        => 'drds.ap-southeast-1.aliyuncs.com',
+                    'us-east-1'             => 'drds.us-east-1.aliyuncs.com',
+                    'cn-shanghai-finance-1' => 'drds.cn-hangzhou.aliyuncs.com',
+                    'cn-shenzhen-finance-1' => 'drds.cn-hangzhou.aliyuncs.com',
+                    'cn-north-2-gov-1'      => 'drds.cn-hangzhou.aliyuncs.com',
+                ],
+            'opensearch'      =>
+                [
+                    'cn-qingdao'       => 'opensearch.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'       => 'opensearch.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'   => 'opensearch.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'      => 'opensearch.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'      => 'opensearch.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'      => 'opensearch.cn-shenzhen.aliyuncs.com',
+                    'ap-southeast-1'   => 'opensearch.ap-southeast-1.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'opensearch.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'edasschedulerx'  =>
+                [
+                    'cn-beijing'     => 'schedulerx.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'schedulerx.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'    => 'schedulerx.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'schedulerx.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'schedulerx.cn-shenzhen.aliyuncs.com',
+                    'us-east-1'      => 'schedulerx.us-east-1.aliyuncs.com',
+                ],
+            'tag'             =>
+                [
+                    'cn-beijing'                  => 'tag.aliyuncs.com',
+                    'cn-shenzhen'                 => 'tag.aliyuncs.com',
+                    'cn-qingdao'                  => 'tag.aliyuncs.com',
+                    'cn-chengdu'                  => 'tag.cn-chengdu.aliyuncs.com',
+                    'cn-zhangjiakou'              => 'tag.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'                => 'tag.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'                 => 'tag.aliyuncs.com',
+                    'cn-shanghai'                 => 'tag.aliyuncs.com',
+                    'cn-hongkong'                 => 'tag.aliyuncs.com',
+                    'ap-southeast-1'              => 'tag.aliyuncs.com',
+                    'ap-southeast-2'              => 'tag.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3'              => 'tag.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5'              => 'tag.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1'              => 'tag.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'                   => 'tag.eu-west-1.aliyuncs.com',
+                    'us-west-1'                   => 'tag.aliyuncs.com',
+                    'us-east-1'                   => 'tag.aliyuncs.com',
+                    'eu-central-1'                => 'tag.eu-central-1.aliyuncs.com',
+                    'me-east-1'                   => 'tag.me-east-1.aliyuncs.com',
+                    'ap-south-1'                  => 'tag.ap-south-1.aliyuncs.com',
+                    'cn-hangzhou-finance'         => 'tag.aliyuncs.com',
+                    'cn-shanghai-finance-1'       => 'tag.aliyuncs.com',
+                    'cn-shenzhen-finance-1'       => 'tag.cn-shenzhen-finance-1.aliyuncs.com',
+                    'cn-north-2-gov-1'            => 'tag.cn-north-2-gov-1.aliyuncs.com',
+                    'cn-fujian'                   => 'tag.aliyuncs.com',
+                    'cn-haidian-cm12-c01'         => 'tag.aliyuncs.com',
+                    'cn-hangzhou-internal-test-2' => 'tag.aliyuncs.com',
+                    'cn-hangzhou-internal-test-3' => 'tag.aliyuncs.com',
+                    'cn-hangzhou-test-306'        => 'tag.aliyuncs.com',
+                    'cn-shanghai-et15-b01'        => 'tag.aliyuncs.com',
+                    'cn-zhangbei-na61-b01'        => 'tag.aliyuncs.com',
+                    'eu-west-1-oxs'               => 'tag.cn-shenzhen-cloudstone.aliyuncs.com',
+                    'cn-heyuan'                   => 'tag.cn-heyuan.aliyuncs.com',
+                    'cn-wulanchabu'               => 'tag.cn-wulanchabu.aliyuncs.com',
+                ],
+            'servicemesh'     =>
+                [
+                    'cn-beijing'     => 'servicemesh.aliyuncs.com',
+                    'cn-zhangjiakou' => 'servicemesh.aliyuncs.com',
+                    'cn-hangzhou'    => 'servicemesh.aliyuncs.com',
+                    'cn-shanghai'    => 'servicemesh.aliyuncs.com',
+                    'cn-shenzhen'    => 'servicemesh.aliyuncs.com',
+                    'ap-southeast-1' => 'servicemesh.aliyuncs.com',
+                    'us-west-1'      => 'servicemesh.aliyuncs.com',
+                ],
+            'rdc'             =>
+                [
+                    'cn-beijing' => 'rdc.cn-beijing.aliyuncs.com',
+                ],
+            'sddprsrc'        =>
+                [
+                    'cn-zhangjiakou'   => 'sddp-rsrc.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'      => 'sddprsrc.cn-hangzhou.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'sddprsrc.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'polardbx'        =>
+                [
+                    'cn-hangzhou'    => 'polardbx.cn-hangzhou.aliyuncs.com',
+                    'cn-qingdao'     => 'polardbx.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'     => 'polardbx.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'polardbx.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'polardbx.cn-huhehaote.aliyuncs.com',
+                    'cn-shanghai'    => 'polardbx.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'polardbx.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'    => 'polardbx.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1' => 'polardbx.ap-southeast-1.aliyuncs.com',
+                ],
+            'dytns'           =>
+                [
+                    'cn-hangzhou' => 'dytnsapi.aliyuncs.com',
+                ],
+            'datahub'         =>
+                [
+                    'cn-hangzhou' => 'datahub.aliyuncs.com',
+                    'cn-shanghai' => 'datahub.aliyuncs.com',
+                ],
+            'geoip'           =>
+                [
+                    'cn-hangzhou' => 'geoip.aliyuncs.com',
+                ],
+            'digitalstore'    =>
+                [
+                    'cn-hangzhou' => 'digitalstore.cn-hangzhou.aliyuncs.com',
+                ],
+            'quickbi'         =>
+                [
+                    'cn-hangzhou'    => 'quickbi-public-share.aliyuncs.com',
+                    'cn-hongkong'    => 'quickbi-public-share.aliyuncs.com',
+                    'ap-southeast-1' => 'quickbi-public-share.aliyuncs.com',
+                    'ap-southeast-3' => 'quickbi-public-share.aliyuncs.com',
+                    'eu-central-1'   => 'quickbi-public-share.aliyuncs.com',
+                ],
+            'alimtdt'         =>
+                [
+                    'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com',
+                ],
+            'sofamq'          =>
+                [
+                    'cn-shanghai'         => 'sofa.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com',
+                ],
+            'sofaodp'         =>
+                [
+                    'cn-shanghai'         => 'sofa.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com',
+                ],
+            'dascharge'       =>
+                [
+                    'cn-shanghai' => 'das.aliyuncs.com',
+                    'cn-hangzhou' => 'das.aliyuncs.com',
+                ],
+            'sofadst'         =>
+                [
+                    'cn-shanghai' => 'sofa.cn-shanghai.aliyuncs.com',
+                ],
+            'springcloud'     =>
+                [
+                    'cn-qingdao'     => 'ms.aliyuncs.com',
+                    'cn-beijing'     => 'ms.aliyuncs.com',
+                    'cn-zhangjiakou' => 'ms.aliyuncs.com',
+                    'cn-hangzhou'    => 'ms.aliyuncs.com',
+                    'cn-shanghai'    => 'ms.aliyuncs.com',
+                    'cn-shenzhen'    => 'ms.aliyuncs.com',
+                ],
+            'edasmsc'         =>
+                [
+                    'cn-qingdao'     => 'edasmsc.aliyuncs.com',
+                    'cn-beijing'     => 'edasmsc.aliyuncs.com',
+                    'cn-zhangjiakou' => 'edasmsc.aliyuncs.com',
+                    'cn-hangzhou'    => 'edasmsc.aliyuncs.com',
+                    'cn-shanghai'    => 'edasmsc.aliyuncs.com',
+                    'cn-shenzhen'    => 'edasmsc.aliyuncs.com',
+                    'cn-hongkong'    => 'edasmsc.aliyuncs.com',
+                ],
+            'polarx'          =>
+                [
+                    'cn-qingdao'     => 'polardbx-share.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'     => 'polardbx-share.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'polardbx-share.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'polardbx-share.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'    => 'polardbx-share.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'polardbx-share.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'polardbx-share.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'    => 'polardbx-share.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1' => 'polardbx-share.ap-southeast-1.aliyuncs.com',
+                ],
+            'cddc'            =>
+                [
+                    'cn-qingdao'     => 'cddc.aliyuncs.com',
+                    'cn-beijing'     => 'cddc.aliyuncs.com',
+                    'cn-chengdu'     => 'cddc.cn-chengdu.aliyuncs.com',
+                    'cn-zhangjiakou' => 'cddc.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'cddc.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'    => 'cddc.aliyuncs.com',
+                    'cn-shanghai'    => 'cddc.aliyuncs.com',
+                    'cn-shenzhen'    => 'cddc.aliyuncs.com',
+                    'cn-hongkong'    => 'cddc.aliyuncs.com',
+                    'ap-southeast-1' => 'cddc.aliyuncs.com',
+                    'ap-southeast-2' => 'cddc.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3' => 'cddc.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5' => 'cddc.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1' => 'cddc.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'      => 'cddc.eu-west-1.aliyuncs.com',
+                    'us-west-1'      => 'cddc.aliyuncs.com',
+                    'us-east-1'      => 'cddc.aliyuncs.com',
+                    'eu-central-1'   => 'cddc.eu-central-1.aliyuncs.com',
+                    'me-east-1'      => 'cddc.me-east-1.aliyuncs.com',
+                    'ap-south-1'     => 'cddc.ap-south-1.aliyuncs.com',
+                    'cn-heyuan'      => 'cddc.aliyuncs.com',
+                ],
+            'dlasparkpre'     =>
+                [
+                    'cn-qingdao'     => 'dlaspark.aliyuncs.com',
+                    'cn-beijing'     => 'dlaspark.aliyuncs.com',
+                    'cn-zhangjiakou' => 'dlaspark.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'    => 'dlaspark.aliyuncs.com',
+                    'cn-shanghai'    => 'dlaspark.aliyuncs.com',
+                    'cn-shenzhen'    => 'dlaspark.aliyuncs.com',
+                ],
+            'spark'           =>
+                [
+                    'cn-qingdao'     => 'ddi.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'     => 'ddi.aliyuncs.com',
+                    'cn-chengdu'     => 'ddi.cn-chengdu.aliyuncs.com',
+                    'cn-zhangjiakou' => 'ddi.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'ddi.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'    => 'ddi.aliyuncs.com',
+                    'cn-shanghai'    => 'ddi.aliyuncs.com',
+                    'cn-shenzhen'    => 'ddi.aliyuncs.com',
+                    'cn-hongkong'    => 'ddi.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1' => 'ddi.aliyuncs.com',
+                    'ap-southeast-2' => 'ddi.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3' => 'ddi.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5' => 'ddi.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1' => 'ddi.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'      => 'ddi.eu-west-1.aliyuncs.com',
+                    'us-west-1'      => 'ddi.aliyuncs.com',
+                    'us-east-1'      => 'ddi.us-east-1.aliyuncs.com',
+                    'eu-central-1'   => 'ddi.eu-central-1.aliyuncs.com',
+                    'me-east-1'      => 'ddi.me-east-1.aliyuncs.com',
+                    'ap-south-1'     => 'ddi.ap-south-1.aliyuncs.com',
+                    'cn-heyuan'      => 'ddi.aliyuncs.com',
+                ],
+            'multisearch'     =>
+                [
+                    'cn-beijing'  => 'multisearch.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou' => 'multisearch.cn-hangzhou.aliyuncs.com',
+                ],
+            'pai'             =>
+                [
+                    'cn-beijing'     => 'pai.cn-beijing.aliyuncs.com',
+                    'cn-hangzhou'    => 'pai.cn-hangzhou.data.aliyun.com',
+                    'cn-shanghai'    => 'pai.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'pai.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'    => 'pai.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1' => 'pai.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2' => 'pai.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3' => 'pai.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5' => 'pai.ap-southeast-5.aliyuncs.com',
+                    'us-west-1'      => 'pai.us-west-1.aliyuncs.com',
+                    'us-east-1'      => 'pai.us-east-1.aliyuncs.com',
+                    'eu-central-1'   => 'pai.eu-central-1.aliyuncs.com',
+                    'me-east-1'      => 'pai.me-east-1.aliyuncs.com',
+                    'ap-south-1'     => 'pai.ap-south-1.aliyuncs.com',
+                ],
+            'fcpre'           =>
+                [
+                    'cn-chengdu'          => 'cn-chengdu.fc.aliyuncs.com',
+                    'ap-southeast-3'      => 'ap-southeast-3.fc.aliyuncs.com',
+                    'eu-west-1'           => 'eu-west-1.fc.aliyuncs.com',
+                    'cn-hangzhou-finance' => 'cn-hangzhou-finance.fc.aliyuncs.com',
+                ],
+            'ahaschaospre'    =>
+                [
+                    'cn-zhangjiakou' => 'ahas.cn-zhangjiakou.aliyuncs.com',
+                ],
+            'sasti'           =>
+                [
+                    'cn-zhangjiakou' => 'sasti.aliyuncs.com',
+                ],
+            'config'          =>
+                [
+                    'cn-hangzhou' => 'config.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'config.cn-shanghai.aliyuncs.com',
+                ],
+            'ledgerdb'        =>
+                [
+                    'cn-hangzhou' => 'ledgerdb.cn-hangzhou.aliyuncs.com',
+                ],
+            'nlpvision'       =>
+                [
+                    'cn-hangzhou' => 'nlp-vision.cn-hangzhou.aliyuncs.com',
+                ],
+            'alimtld'         =>
+                [
+                    'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com',
+                ],
+            'databot'         =>
+                [
+                    'cn-hangzhou' => 'databot.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'databot.cn-shanghai.aliyuncs.com',
+                ],
+            'livinglink'      =>
+                [
+                    'cn-hangzhou'    => 'livinglink.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'livinglink.cn-shanghai.aliyuncs.com',
+                    'ap-southeast-1' => 'livinglink.ap-southeast-1.aliyuncs.com',
+                    'us-east-1'      => 'livinglink.us-east-1.aliyuncs.com',
+                    'eu-central-1'   => 'livinglink.eu-central-1.aliyuncs.com',
+                ],
+            'eipanycast'      =>
+                [
+                    'cn-hangzhou' => 'eipanycast.cn-hangzhou.aliyuncs.com',
+                ],
+            'alimtct'         =>
+                [
+                    'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com',
+                ],
+            'videorecog'      =>
+                [
+                    'cn-shanghai' => 'videorecog.cn-shanghai.aliyuncs.com',
+                ],
+            'imageprocess'    =>
+                [
+                    'cn-shanghai' => 'imageprocess.cn-shanghai.aliyuncs.com',
+                ],
+            'sofats'          =>
+                [
+                    'cn-shanghai'         => 'sofa.cn-shanghai.aliyuncs.com',
+                    'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com',
+                ],
+            'videoenhan'      =>
+                [
+                    'cn-shanghai' => 'videoenhan.cn-shanghai.aliyuncs.com',
+                ],
+            'imgsearch'       =>
+                [
+                    'cn-shanghai' => 'imgsearch.cn-shanghai.aliyuncs.com',
+                ],
+            'videoseg'        =>
+                [
+                    'cn-shanghai' => 'videoseg.cn-shanghai.aliyuncs.com',
+                ],
+            'sofacaferms'     =>
+                [
+                    'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com',
+                ],
+            'retailadvqa'     =>
+                [
+                    'cn-zhangjiakou' => 'quicka-public.cn-zhangjiakou.aliyuncs.com',
+                    'cn-shanghai'    => 'quicka-public.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'quicka-public.cn-shenzhen.aliyuncs.com',
+                ],
+            'linkanalytics'   =>
+                [
+                    'cn-hangzhou' => 'linkanalytics.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'linkanalytics.cn-shanghai.aliyuncs.com',
+                ],
+            'swas'            =>
+                [
+                    'cn-qingdao'     => 'swas.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'     => 'swas.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'swas.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'swas.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'    => 'swas.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'swas.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'swas.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'    => 'swas.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1' => 'swas.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2' => 'swas.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3' => 'swas.ap-southeast-3.aliyuncs.com',
+                    'ap-southeast-5' => 'swas.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1' => 'swas.ap-northeast-1.aliyuncs.com',
+                    'eu-west-1'      => 'swas.eu-west-1.aliyuncs.com',
+                    'us-west-1'      => 'swas.us-west-1.aliyuncs.com',
+                    'us-east-1'      => 'swas.us-east-1.aliyuncs.com',
+                    'eu-central-1'   => 'swas.eu-central-1.aliyuncs.com',
+                    'ap-south-1'     => 'swas.ap-south-1.aliyuncs.com',
+                ],
+            'gws'             =>
+                [
+                    'cn-qingdao'     => 'gws.cn-qingdao.aliyuncs.com',
+                    'cn-beijing'     => 'gws.cn-beijing.aliyuncs.com',
+                    'cn-chengdu'     => 'gws.cn-chengdu.aliyuncs.com',
+                    'cn-zhangjiakou' => 'gws.cn-zhangjiakou.aliyuncs.com',
+                    'cn-huhehaote'   => 'gws.cn-huhehaote.aliyuncs.com',
+                    'cn-hangzhou'    => 'gws.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'gws.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'gws.cn-shenzhen.aliyuncs.com',
+                    'cn-hongkong'    => 'gws.cn-hongkong.aliyuncs.com',
+                    'ap-southeast-1' => 'gws.ap-southeast-1.aliyuncs.com',
+                    'ap-southeast-2' => 'gws.ap-southeast-2.aliyuncs.com',
+                    'ap-southeast-3' => 'gws.ap-northeast-3.aliyuncs.com',
+                    'ap-southeast-5' => 'gws.ap-southeast-5.aliyuncs.com',
+                    'ap-northeast-1' => 'gws.ap-northeast-1.aliyuncs.com',
+                    'us-west-1'      => 'gws.us-west-1.aliyuncs.com',
+                    'us-east-1'      => 'gws.us-east-1.aliyuncs.com',
+                    'eu-central-1'   => 'gws.eu-central-1.aliyuncs.com',
+                    'ap-south-1'     => 'gws.ap-south-1.aliyuncs.com',
+                ],
+            'dlacupost'       =>
+                [
+                    'cn-beijing'     => 'openanalytics.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou' => 'openanalytics.cn-hongkong.aliyuncs.com',
+                    'cn-hangzhou'    => 'openanalytics.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'    => 'openanalytics.cn-shanghai.aliyuncs.com',
+                    'cn-shenzhen'    => 'openanalytics.cn-beijing.aliyuncs.com',
+                    'cn-hongkong'    => 'openanalytics.cn-hongkong.aliyuncs.com',
+                ],
+            'ressharing'      =>
+                [
+                    'cn-beijing'       => 'resourcesharing.cn-beijing.aliyuncs.com',
+                    'cn-zhangjiakou'   => 'resourcesharing.cn-zhangjiakou.aliyuncs.com',
+                    'cn-hangzhou'      => 'resourcesharing.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai'      => 'resourcesharing.cn-shanghai.aliyuncs.com',
+                    'ap-southeast-1'   => 'resourcesharing.ap-southeast-1.aliyuncs.com',
+                    'cn-north-2-gov-1' => 'resourcesharing.cn-north-2-gov-1.aliyuncs.com',
+                ],
+            'uisplus'         =>
+                [
+                    'cn-huhehaote' => 'uisplus.cn-huhehaote.aliyuncs.com',
+                    'cn-shenzhen'  => 'uisplus.cn-shenzhen.aliyuncs.com',
+                ],
+            'idrsservice'     =>
+                [
+                    'cn-hangzhou' => 'idrsservice.cn-hangzhou.aliyuncs.com',
+                ],
+            'alinlp'          =>
+                [
+                    'cn-hangzhou' => 'alinlp.cn-hangzhou.aliyuncs.com',
+                ],
+            'miniapplcdp'     =>
+                [
+                    'cn-hangzhou' => 'miniapplcdp.aliyuncs.com',
+                    'cn-shanghai' => 'miniapplcdp.aliyuncs.com',
+                ],
+            'baasdis'         =>
+                [
+                    'cn-hangzhou' => 'baasdis.cn-hangzhou.aliyuncs.com',
+                ],
+            'baasodats'       =>
+                [
+                    'cn-hangzhou' => 'baasodats.cn-hangzhou.aliyuncs.com',
+                ],
+            'baascccs'        =>
+                [
+                    'cn-hangzhou' => 'baascccs.cn-hangzhou.aliyuncs.com',
+                ],
+            'pam'             =>
+                [
+                    'cn-hangzhou' => 'pam.cn-hangzhou.aliyuncs.com',
+                ],
+            'alimtec'         =>
+                [
+                    'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com',
+                ],
+            'cloudgame'       =>
+                [
+                    'cn-hangzhou' => 'cloudgame.cn-hangzhou.aliyuncs.com',
+                    'cn-shanghai' => 'cloudgame.cn-shanghai.aliyuncs.com',
+                ],
+            'csas'            =>
+                [
+                    'cn-hangzhou' => 'csas.aliyuncs.com',
+                ],
+            'facebodyqps'     =>
+                [
+                    'cn-shanghai' => 'facebody.cn-shanghai.aliyuncs.com',
+                ],
+            'face'            =>
+                [
+                    'cn-shanghai' => 'face.cn-shanghai.aliyuncs.com',
+                ],
+            'cams'            =>
+                [
+                    'ap-southeast-1' => 'cams.ap-southeast-1.aliyuncs.com',
+                ],
+            'mpaasfin'        =>
+                [
+                    'cn-hangzhou-finance' => 'mpaas.cn-hangzhou-finance.aliyuncs.com',
+                ],
+            'mpaasgov'        =>
+                [
+                    'cn-north-2-gov-1' => 'mpaas.cn-north-2-gov-1.aliyuncs.com',
+                ],
+        ],
+];
+

+ 65 - 0
vendor/alibabacloud/client/src/Credentials/AccessKeyCredential.php

xqd
@@ -0,0 +1,65 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials;
+
+use AlibabaCloud\Client\Filter\CredentialFilter;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Use the AccessKey to complete the authentication.
+ *
+ * @package   AlibabaCloud\Client\Credentials
+ */
+class AccessKeyCredential implements CredentialsInterface
+{
+
+    /**
+     * @var string
+     */
+    private $accessKeyId;
+
+    /**
+     * @var string
+     */
+    private $accessKeySecret;
+
+    /**
+     * AccessKeyCredential constructor.
+     *
+     * @param string $accessKeyId     Access key ID
+     * @param string $accessKeySecret Access Key Secret
+     *
+     * @throws ClientException
+     */
+    public function __construct($accessKeyId, $accessKeySecret)
+    {
+        CredentialFilter::AccessKey($accessKeyId, $accessKeySecret);
+
+        $this->accessKeyId     = $accessKeyId;
+        $this->accessKeySecret = $accessKeySecret;
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeyId()
+    {
+        return $this->accessKeyId;
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeySecret()
+    {
+        return $this->accessKeySecret;
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "$this->accessKeyId#$this->accessKeySecret";
+    }
+}

+ 66 - 0
vendor/alibabacloud/client/src/Credentials/BearerTokenCredential.php

xqd
@@ -0,0 +1,66 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials;
+
+use AlibabaCloud\Client\Filter\CredentialFilter;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class BearerTokenCredential
+ *
+ * @package   AlibabaCloud\Client\Credentials
+ */
+class BearerTokenCredential implements CredentialsInterface
+{
+
+    /**
+     * @var string
+     */
+    private $bearerToken;
+
+    /**
+     * Class constructor.
+     *
+     * @param string $bearerToken
+     *
+     * @throws ClientException
+     */
+    public function __construct($bearerToken)
+    {
+        CredentialFilter::bearerToken($bearerToken);
+
+        $this->bearerToken = $bearerToken;
+    }
+
+    /**
+     * @return string
+     */
+    public function getBearerToken()
+    {
+        return $this->bearerToken;
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeyId()
+    {
+        return '';
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeySecret()
+    {
+        return '';
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "bearerToken#$this->bearerToken";
+    }
+}

+ 18 - 0
vendor/alibabacloud/client/src/Credentials/CredentialsInterface.php

xqd
@@ -0,0 +1,18 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials;
+
+/**
+ * interface CredentialsInterface
+ *
+ * @package            AlibabaCloud\Client\Credentials
+ *
+ * @codeCoverageIgnore
+ */
+interface CredentialsInterface
+{
+    /**
+     * @return string
+     */
+    public function __toString();
+}

+ 50 - 0
vendor/alibabacloud/client/src/Credentials/EcsRamRoleCredential.php

xqd
@@ -0,0 +1,50 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials;
+
+use AlibabaCloud\Client\Filter\CredentialFilter;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Use the RAM role of an ECS instance to complete the authentication.
+ *
+ * @package   AlibabaCloud\Client\Credentials
+ */
+class EcsRamRoleCredential implements CredentialsInterface
+{
+
+    /**
+     * @var string
+     */
+    private $roleName;
+
+    /**
+     * Class constructor.
+     *
+     * @param string $roleName
+     *
+     * @throws ClientException
+     */
+    public function __construct($roleName)
+    {
+        CredentialFilter::roleName($roleName);
+
+        $this->roleName = $roleName;
+    }
+
+    /**
+     * @return string
+     */
+    public function getRoleName()
+    {
+        return $this->roleName;
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "roleName#$this->roleName";
+    }
+}

+ 181 - 0
vendor/alibabacloud/client/src/Credentials/Ini/CreateTrait.php

xqd
@@ -0,0 +1,181 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials\Ini;
+
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Clients\Client;
+use AlibabaCloud\Client\Clients\AccessKeyClient;
+use AlibabaCloud\Client\Clients\RamRoleArnClient;
+use AlibabaCloud\Client\Clients\RsaKeyPairClient;
+use AlibabaCloud\Client\Clients\EcsRamRoleClient;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Clients\BearerTokenClient;
+
+/**
+ * Trait CreateTrait
+ *
+ * @package   AlibabaCloud\Client\Credentials\Ini
+ *
+ * @mixin     IniCredential
+ */
+trait CreateTrait
+{
+    /**
+     * @param string $clientName
+     * @param array  $credential
+     *
+     * @return Client|bool
+     * @throws ClientException
+     */
+    protected function createClient($clientName, array $credential)
+    {
+        if (!isset($credential['enable']) || !$credential['enable']) {
+            return false;
+        }
+
+        if (!isset($credential['type'])) {
+            $this->missingRequired('type', $clientName);
+        }
+
+        return $this->createClientByType($clientName, $credential)->name($clientName);
+    }
+
+    /**
+     * @param string $clientName
+     * @param array  $credential
+     *
+     * @return AccessKeyClient|BearerTokenClient|EcsRamRoleClient|RamRoleArnClient|RsaKeyPairClient
+     * @throws ClientException
+     */
+    private function createClientByType($clientName, array $credential)
+    {
+        switch (\strtolower($credential['type'])) {
+            case 'access_key':
+                return $this->accessKeyClient($clientName, $credential);
+            case 'ecs_ram_role':
+                return $this->ecsRamRoleClient($clientName, $credential);
+            case 'ram_role_arn':
+                return $this->ramRoleArnClient($clientName, $credential);
+            case 'bearer_token':
+                return $this->bearerTokenClient($clientName, $credential);
+            case 'rsa_key_pair':
+                return $this->rsaKeyPairClient($clientName, $credential);
+            default:
+                throw new ClientException(
+                    "Invalid type '{$credential['type']}' for '$clientName' in {$this->filename}",
+                    SDK::INVALID_CREDENTIAL
+                );
+        }
+    }
+
+    /**
+     * @param array  $credential
+     * @param string $clientName
+     *
+     * @return AccessKeyClient
+     * @throws ClientException
+     */
+    private function accessKeyClient($clientName, array $credential)
+    {
+        if (!isset($credential['access_key_id'])) {
+            $this->missingRequired('access_key_id', $clientName);
+        }
+
+        if (!isset($credential['access_key_secret'])) {
+            $this->missingRequired('access_key_secret', $clientName);
+        }
+
+        return new AccessKeyClient(
+            $credential['access_key_id'],
+            $credential['access_key_secret']
+        );
+    }
+
+    /**
+     * @param string $clientName
+     * @param array  $credential
+     *
+     * @return EcsRamRoleClient
+     * @throws ClientException
+     */
+    private function ecsRamRoleClient($clientName, array $credential)
+    {
+        if (!isset($credential['role_name'])) {
+            $this->missingRequired('role_name', $clientName);
+        }
+
+        return new EcsRamRoleClient($credential['role_name']);
+    }
+
+    /**
+     * @param string $clientName
+     * @param array  $credential
+     *
+     * @return RamRoleArnClient
+     * @throws ClientException
+     */
+    private function ramRoleArnClient($clientName, array $credential)
+    {
+        if (!isset($credential['access_key_id'])) {
+            $this->missingRequired('access_key_id', $clientName);
+        }
+
+        if (!isset($credential['access_key_secret'])) {
+            $this->missingRequired('access_key_secret', $clientName);
+        }
+
+        if (!isset($credential['role_arn'])) {
+            $this->missingRequired('role_arn', $clientName);
+        }
+
+        if (!isset($credential['role_session_name'])) {
+            $this->missingRequired('role_session_name', $clientName);
+        }
+
+        return new RamRoleArnClient(
+            $credential['access_key_id'],
+            $credential['access_key_secret'],
+            $credential['role_arn'],
+            $credential['role_session_name']
+        );
+    }
+
+    /**
+     * @param string $clientName
+     * @param array  $credential
+     *
+     * @return BearerTokenClient
+     * @throws ClientException
+     */
+    private function bearerTokenClient($clientName, array $credential)
+    {
+        if (!isset($credential['bearer_token'])) {
+            $this->missingRequired('bearer_token', $clientName);
+        }
+
+        return new BearerTokenClient($credential['bearer_token']);
+    }
+
+    /**
+     * @param array  $credential
+     * @param string $clientName
+     *
+     * @return RsaKeyPairClient
+     * @throws ClientException
+     */
+    private function rsaKeyPairClient($clientName, array $credential)
+    {
+        if (!isset($credential['public_key_id'])) {
+            $this->missingRequired('public_key_id', $clientName);
+        }
+
+        if (!isset($credential['private_key_file'])) {
+            $this->missingRequired('private_key_file', $clientName);
+        }
+
+        return new RsaKeyPairClient(
+            $credential['public_key_id'],
+            $credential['private_key_file']
+        );
+    }
+}

+ 209 - 0
vendor/alibabacloud/client/src/Credentials/Ini/IniCredential.php

xqd
@@ -0,0 +1,209 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials\Ini;
+
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Clients\Client;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class IniCredential
+ *
+ * @package   AlibabaCloud\Client\Credentials\Ini
+ */
+class IniCredential
+{
+    use CreateTrait;
+    use OptionsTrait;
+
+    /**
+     * @var array
+     */
+    private static $hasLoaded;
+
+    /**
+     * @var string
+     */
+    protected $filename;
+
+    /**
+     * IniCredential constructor.
+     *
+     * @param string $filename
+     */
+    public function __construct($filename = '')
+    {
+        $this->filename = $filename ?: $this->getDefaultFile();
+    }
+
+    /**
+     * Get the default credential file.
+     *
+     * @return string
+     */
+    public function getDefaultFile()
+    {
+        return self::getHomeDirectory() . DIRECTORY_SEPARATOR . '.alibabacloud' . DIRECTORY_SEPARATOR . 'credentials';
+    }
+
+    /**
+     * Gets the environment's HOME directory.
+     *
+     * @return null|string
+     */
+    private static function getHomeDirectory()
+    {
+        if (getenv('HOME')) {
+            return getenv('HOME');
+        }
+
+        return (getenv('HOMEDRIVE') && getenv('HOMEPATH'))
+            ? getenv('HOMEDRIVE') . getenv('HOMEPATH')
+            : null;
+    }
+
+    /**
+     * Clear credential cache.
+     *
+     * @return void
+     */
+    public static function forgetLoadedCredentialsFile()
+    {
+        self::$hasLoaded = [];
+    }
+
+    /**
+     * Get the credential file.
+     *
+     * @return string
+     */
+    public function getFilename()
+    {
+        return $this->filename;
+    }
+
+    /**
+     * @param array  $array
+     * @param string $key
+     *
+     * @return bool
+     */
+    protected static function isNotEmpty(array $array, $key)
+    {
+        return isset($array[$key]) && !empty($array[$key]);
+    }
+
+    /**
+     * @param string $key
+     * @param string $clientName
+     *
+     * @throws ClientException
+     */
+    public function missingRequired($key, $clientName)
+    {
+        throw new ClientException(
+            "Missing required '$key' option for '$clientName' in " . $this->getFilename(),
+            SDK::INVALID_CREDENTIAL
+        );
+    }
+
+    /**
+     * @return array|mixed
+     * @throws ClientException
+     */
+    public function load()
+    {
+        // If it has been loaded, assign the client directly.
+        if (isset(self::$hasLoaded[$this->filename])) {
+            /**
+             * @var $client Client
+             */
+            foreach (self::$hasLoaded[$this->filename] as $projectName => $client) {
+                $client->name($projectName);
+            }
+
+            return self::$hasLoaded[$this->filename];
+        }
+
+        return $this->loadFile();
+    }
+
+    /**
+     * Exceptions will be thrown if the file is unreadable and not the default file.
+     *
+     * @return array|mixed
+     * @throws ClientException
+     */
+    private function loadFile()
+    {
+        if (!\AlibabaCloud\Client\inOpenBasedir($this->filename)) {
+            return [];
+        }
+
+        if (!\is_readable($this->filename) || !\is_file($this->filename)) {
+            if ($this->filename === $this->getDefaultFile()) {
+                // @codeCoverageIgnoreStart
+                return [];
+                // @codeCoverageIgnoreEnd
+            }
+            throw new ClientException(
+                'Credential file is not readable: ' . $this->getFilename(),
+                SDK::INVALID_CREDENTIAL
+            );
+        }
+
+        return $this->parseFile();
+    }
+
+    /**
+     * Decode the ini file into an array.
+     *
+     * @return array|mixed
+     * @throws ClientException
+     */
+    private function parseFile()
+    {
+        try {
+            $file = \parse_ini_file($this->filename, true);
+            if (\is_array($file) && $file !== []) {
+                return $this->initClients($file);
+            }
+            throw new ClientException(
+                'Format error: ' . $this->getFilename(),
+                SDK::INVALID_CREDENTIAL
+            );
+        } catch (\Exception $e) {
+            throw new ClientException(
+                $e->getMessage(),
+                SDK::INVALID_CREDENTIAL,
+                $e
+            );
+        }
+    }
+
+    /**
+     * Initialize clients.
+     *
+     * @param array $array
+     *
+     * @return array|mixed
+     * @throws ClientException
+     */
+    private function initClients($array)
+    {
+        foreach (\array_change_key_case($array) as $clientName => $configures) {
+            $configures     = \array_change_key_case($configures);
+            $clientInstance = $this->createClient($clientName, $configures);
+            if ($clientInstance instanceof Client) {
+                self::$hasLoaded[$this->filename][$clientName] = $clientInstance;
+                self::setClientAttributes($configures, $clientInstance);
+                self::setCert($configures, $clientInstance);
+                self::setProxy($configures, $clientInstance);
+            }
+        }
+
+        return isset(self::$hasLoaded[$this->filename])
+            ? self::$hasLoaded[$this->filename]
+            : [];
+    }
+}

+ 111 - 0
vendor/alibabacloud/client/src/Credentials/Ini/OptionsTrait.php

xqd
@@ -0,0 +1,111 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials\Ini;
+
+use AlibabaCloud\Client\Clients\Client;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Trait OptionsTrait
+ *
+ * @package   AlibabaCloud\Client\Credentials\Ini
+ *
+ * @mixin     IniCredential
+ */
+trait OptionsTrait
+{
+    /**
+     * @param array  $configures
+     * @param Client $client
+     *
+     * @throws ClientException
+     */
+    private static function setClientAttributes($configures, Client $client)
+    {
+        if (self::isNotEmpty($configures, 'region_id')) {
+            $client->regionId($configures['region_id']);
+        }
+
+        if (isset($configures['debug'])) {
+            $client->options(
+                [
+                    'debug' => (bool)$configures['debug'],
+                ]
+            );
+        }
+
+        if (self::isNotEmpty($configures, 'timeout')) {
+            $client->options(
+                [
+                    'timeout' => $configures['timeout'],
+                ]
+            );
+        }
+
+        if (self::isNotEmpty($configures, 'connect_timeout')) {
+            $client->options(
+                [
+                    'connect_timeout' => $configures['connect_timeout'],
+                ]
+            );
+        }
+    }
+
+    /**
+     * @param array  $configures
+     * @param Client $client
+     */
+    private static function setProxy($configures, Client $client)
+    {
+        if (self::isNotEmpty($configures, 'proxy')) {
+            $client->options(
+                [
+                    'proxy' => $configures['proxy'],
+                ]
+            );
+        }
+        $proxy = [];
+        if (self::isNotEmpty($configures, 'proxy_http')) {
+            $proxy['http'] = $configures['proxy_http'];
+        }
+        if (self::isNotEmpty($configures, 'proxy_https')) {
+            $proxy['https'] = $configures['proxy_https'];
+        }
+        if (self::isNotEmpty($configures, 'proxy_no')) {
+            $proxy['no'] = \explode(',', $configures['proxy_no']);
+        }
+        if ($proxy !== []) {
+            $client->options(
+                [
+                    'proxy' => $proxy,
+                ]
+            );
+        }
+    }
+
+    /**
+     * @param array  $configures
+     * @param Client $client
+     */
+    private static function setCert($configures, Client $client)
+    {
+        if (self::isNotEmpty($configures, 'cert_file') && !self::isNotEmpty($configures, 'cert_password')) {
+            $client->options(
+                [
+                    'cert' => $configures['cert_file'],
+                ]
+            );
+        }
+
+        if (self::isNotEmpty($configures, 'cert_file') && self::isNotEmpty($configures, 'cert_password')) {
+            $client->options(
+                [
+                    'cert' => [
+                        $configures['cert_file'],
+                        $configures['cert_password'],
+                    ],
+                ]
+            );
+        }
+    }
+}

+ 170 - 0
vendor/alibabacloud/client/src/Credentials/Providers/CredentialsProvider.php

xqd
@@ -0,0 +1,170 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials\Providers;
+
+use Closure;
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class CredentialsProvider
+ *
+ * @package AlibabaCloud\Client\Credentials\Providers
+ */
+class CredentialsProvider
+{
+    /**
+     * @var array
+     */
+    private static $customChains;
+
+    /**
+     * @throws ClientException
+     */
+    public static function chain()
+    {
+        $providers = func_get_args();
+
+        if (empty($providers)) {
+            throw new ClientException('No providers in chain', SDK::INVALID_ARGUMENT);
+        }
+
+        foreach ($providers as $provider) {
+            if (!$provider instanceof Closure) {
+                throw new ClientException('Providers must all be Closures', SDK::INVALID_ARGUMENT);
+            }
+        }
+
+        self::$customChains = $providers;
+    }
+
+    /**
+     * Forget the custom providers chain.
+     */
+    public static function flush()
+    {
+        self::$customChains = [];
+    }
+
+    /**
+     * @return bool
+     */
+    public static function hasCustomChain()
+    {
+        return (bool)self::$customChains;
+    }
+
+    /**
+     * @param string $clientName
+     *
+     * @throws ClientException
+     */
+    public static function customProvider($clientName)
+    {
+        foreach (self::$customChains as $provider) {
+            $provider();
+            if (AlibabaCloud::has($clientName)) {
+                break;
+            }
+        }
+    }
+
+    /**
+     * @param string $clientName
+     *
+     * @throws ClientException
+     */
+    public static function defaultProvider($clientName)
+    {
+        $providers = [
+            self::env(),
+            self::ini(),
+            self::instance(),
+        ];
+
+        foreach ($providers as $provider) {
+            $provider();
+            if (AlibabaCloud::has($clientName)) {
+                break;
+            }
+        }
+    }
+
+    /**
+     * @return Closure
+     */
+    public static function env()
+    {
+        return static function () {
+            $accessKeyId     = \AlibabaCloud\Client\envNotEmpty('ALIBABA_CLOUD_ACCESS_KEY_ID');
+            $accessKeySecret = \AlibabaCloud\Client\envNotEmpty('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
+
+            if ($accessKeyId && $accessKeySecret) {
+                AlibabaCloud::accessKeyClient($accessKeyId, $accessKeySecret)->asDefaultClient();
+            }
+        };
+    }
+
+    /**
+     * @return Closure
+     */
+    public static function ini()
+    {
+        return static function () {
+            $ini = \AlibabaCloud\Client\envNotEmpty('ALIBABA_CLOUD_CREDENTIALS_FILE');
+
+            if ($ini) {
+                AlibabaCloud::load($ini);
+            } else {
+                // @codeCoverageIgnoreStart
+                AlibabaCloud::load();
+                // @codeCoverageIgnoreEnd
+            }
+
+            self::compatibleWithGlobal();
+        };
+    }
+
+    /**
+     * @codeCoverageIgnore
+     *
+     * Compatible with global
+     *
+     * @throws ClientException
+     */
+    private static function compatibleWithGlobal()
+    {
+        if (AlibabaCloud::has('global') && !AlibabaCloud::has(self::getDefaultName())) {
+            AlibabaCloud::get('global')->name(self::getDefaultName());
+        }
+    }
+
+    /**
+     * @return array|false|string
+     * @throws ClientException
+     */
+    public static function getDefaultName()
+    {
+        $name = \AlibabaCloud\Client\envNotEmpty('ALIBABA_CLOUD_PROFILE');
+
+        if ($name) {
+            return $name;
+        }
+
+        return 'default';
+    }
+
+    /**
+     * @return Closure
+     */
+    public static function instance()
+    {
+        return static function () {
+            $instance = \AlibabaCloud\Client\envNotEmpty('ALIBABA_CLOUD_ECS_METADATA');
+            if ($instance) {
+                AlibabaCloud::ecsRamRoleClient($instance)->asDefaultClient();
+            }
+        };
+    }
+}

+ 128 - 0
vendor/alibabacloud/client/src/Credentials/Providers/EcsRamRoleProvider.php

xqd
@@ -0,0 +1,128 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials\Providers;
+
+use Exception;
+use Stringy\Stringy;
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Result\Result;
+use Psr\Http\Message\ResponseInterface;
+use GuzzleHttp\Exception\GuzzleException;
+use AlibabaCloud\Client\Request\RpcRequest;
+use AlibabaCloud\Client\Credentials\StsCredential;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+use AlibabaCloud\Client\Credentials\EcsRamRoleCredential;
+
+/**
+ * Class EcsRamRoleProvider
+ *
+ * @package   AlibabaCloud\Client\Credentials\Providers
+ */
+class EcsRamRoleProvider extends Provider
+{
+
+    /**
+     * Expiration time slot for temporary security credentials.
+     *
+     * @var int
+     */
+
+    protected $expirationSlot = 10;
+
+    /**
+     * @var string
+     */
+    private $uri = 'http://100.100.100.200/latest/meta-data/ram/security-credentials/';
+
+    /**
+     * Get credential.
+     *
+     * @return StsCredential
+     * @throws ClientException
+     * @throws ServerException
+     */
+    public function get()
+    {
+        $result = $this->getCredentialsInCache();
+
+        if ($result === null) {
+            $result = $this->request();
+
+            if (!isset($result['AccessKeyId'], $result['AccessKeySecret'], $result['SecurityToken'])) {
+                throw new ServerException($result, $this->error, SDK::INVALID_CREDENTIAL);
+            }
+
+            $this->cache($result->toArray());
+        }
+
+        return new StsCredential(
+            $result['AccessKeyId'],
+            $result['AccessKeySecret'],
+            $result['SecurityToken']
+        );
+    }
+
+    /**
+     * Get credentials by request.
+     *
+     * @return Result
+     * @throws ClientException
+     * @throws ServerException
+     */
+    public function request()
+    {
+        $result = $this->getResponse();
+
+        if ($result->getStatusCode() === 404) {
+            $message = 'The role was not found in the instance';
+            throw new ClientException($message, SDK::INVALID_CREDENTIAL);
+        }
+
+        if (!$result->isSuccess()) {
+            $message = 'Error retrieving credentials from result';
+            throw new ServerException($result, $message, SDK::INVALID_CREDENTIAL);
+        }
+
+        return $result;
+    }
+
+    /**
+     * Get data from meta.
+     *
+     * @return mixed|ResponseInterface
+     * @throws ClientException
+     * @throws Exception
+     */
+    public function getResponse()
+    {
+        /**
+         * @var EcsRamRoleCredential $credential
+         */
+        $credential = $this->client->getCredential();
+        $url        = $this->uri . $credential->getRoleName();
+
+        $options = [
+            'http_errors'     => false,
+            'timeout'         => 1,
+            'connect_timeout' => 1,
+            'debug'           => $this->client->isDebug(),
+        ];
+
+        try {
+            return RpcRequest::createClient()->request('GET', $url, $options);
+        } catch (GuzzleException $exception) {
+            if (Stringy::create($exception->getMessage())->contains('timed')) {
+                $message = 'Timeout or instance does not belong to Alibaba Cloud';
+            } else {
+                $message = $exception->getMessage();
+            }
+
+            throw new ClientException(
+                $message,
+                SDK::SERVER_UNREACHABLE,
+                $exception
+            );
+        }
+    }
+}

+ 88 - 0
vendor/alibabacloud/client/src/Credentials/Providers/Provider.php

xqd
@@ -0,0 +1,88 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials\Providers;
+
+use AlibabaCloud\Client\Clients\Client;
+
+/**
+ * Class Provider
+ *
+ * @package   AlibabaCloud\Client\Credentials\Providers
+ */
+class Provider
+{
+    /**
+     * For TSC Duration Seconds
+     */
+    const DURATION_SECONDS = 3600;
+
+    /**
+     * @var array
+     */
+    protected static $credentialsCache = [];
+
+    /**
+     * Expiration time slot for temporary security credentials.
+     *
+     * @var int
+     */
+    protected $expirationSlot = 180;
+
+    /**
+     * @var Client
+     */
+    protected $client;
+
+    /**
+     * @var string
+     */
+    protected $error = 'Result contains no credentials';
+
+    /**
+     * CredentialTrait constructor.
+     *
+     * @param Client $client
+     */
+    public function __construct(Client $client)
+    {
+        $this->client = $client;
+    }
+
+    /**
+     * Get the credentials from the cache in the validity period.
+     *
+     * @return array|null
+     */
+    public function getCredentialsInCache()
+    {
+        if (isset(self::$credentialsCache[$this->key()])) {
+            $result = self::$credentialsCache[$this->key()];
+            if (\strtotime($result['Expiration']) - \time() >= $this->expirationSlot) {
+                return $result;
+            }
+            unset(self::$credentialsCache[$this->key()]);
+        }
+
+        return null;
+    }
+
+    /**
+     * Get the toString of the credentials as the key.
+     *
+     * @return string
+     */
+    protected function key()
+    {
+        return (string)$this->client->getCredential();
+    }
+
+    /**
+     * Cache credentials.
+     *
+     * @param array $credential
+     */
+    protected function cache(array $credential)
+    {
+        self::$credentialsCache[$this->key()] = $credential;
+    }
+}

+ 84 - 0
vendor/alibabacloud/client/src/Credentials/Providers/RamRoleArnProvider.php

xqd
@@ -0,0 +1,84 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials\Providers;
+
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Result\Result;
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\Credentials\StsCredential;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+use AlibabaCloud\Client\Credentials\Requests\AssumeRole;
+
+/**
+ * Class RamRoleArnProvider
+ *
+ * @package   AlibabaCloud\Client\Credentials\Providers
+ */
+class RamRoleArnProvider extends Provider
+{
+
+    /**
+     * Get credential.
+     *
+     *
+     * @param int $timeout
+     * @param int $connectTimeout
+     *
+     * @return StsCredential
+     * @throws ClientException
+     * @throws ServerException
+     */
+    public function get($timeout = Request::TIMEOUT, $connectTimeout = Request::CONNECT_TIMEOUT)
+    {
+        $credential = $this->getCredentialsInCache();
+
+        if (null === $credential) {
+            $result = $this->request($timeout, $connectTimeout);
+
+            if (!isset($result['Credentials']['AccessKeyId'],
+                $result['Credentials']['AccessKeySecret'],
+                $result['Credentials']['SecurityToken'])) {
+                throw new ServerException($result, $this->error, SDK::INVALID_CREDENTIAL);
+            }
+
+            $credential = $result['Credentials'];
+            $this->cache($credential);
+        }
+
+        return new StsCredential(
+            $credential['AccessKeyId'],
+            $credential['AccessKeySecret'],
+            $credential['SecurityToken']
+        );
+    }
+
+    /**
+     * Get credentials by request.
+     *
+     * @param $timeout
+     * @param $connectTimeout
+     *
+     * @return Result
+     * @throws ClientException
+     * @throws ServerException
+     */
+    private function request($timeout, $connectTimeout)
+    {
+        $clientName = __CLASS__ . \uniqid('ak', true);
+        $credential = $this->client->getCredential();
+
+        AlibabaCloud::accessKeyClient(
+            $credential->getAccessKeyId(),
+            $credential->getAccessKeySecret()
+        )->name($clientName);
+
+        return (new AssumeRole($credential))
+            ->client($clientName)
+            ->timeout($timeout)
+            ->connectTimeout($connectTimeout)
+            ->debug($this->client->isDebug())
+            ->request();
+    }
+}

+ 86 - 0
vendor/alibabacloud/client/src/Credentials/Providers/RsaKeyPairProvider.php

xqd
@@ -0,0 +1,86 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials\Providers;
+
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Result\Result;
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\Credentials\StsCredential;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+use AlibabaCloud\Client\Credentials\AccessKeyCredential;
+use AlibabaCloud\Client\Signature\ShaHmac256WithRsaSignature;
+use AlibabaCloud\Client\Credentials\Requests\GenerateSessionAccessKey;
+
+/**
+ * Class RsaKeyPairProvider
+ *
+ * @package   AlibabaCloud\Client\Credentials\Providers
+ */
+class RsaKeyPairProvider extends Provider
+{
+
+    /**
+     * Get credential.
+     *
+     * @param int $timeout
+     * @param int $connectTimeout
+     *
+     * @return StsCredential
+     * @throws ClientException
+     * @throws ServerException
+     */
+    public function get($timeout = Request::TIMEOUT, $connectTimeout = Request::CONNECT_TIMEOUT)
+    {
+        $credential = $this->getCredentialsInCache();
+
+        if ($credential === null) {
+            $result = $this->request($timeout, $connectTimeout);
+
+            if (!isset($result['SessionAccessKey']['SessionAccessKeyId'],
+                $result['SessionAccessKey']['SessionAccessKeySecret'])) {
+                throw new ServerException($result, $this->error, SDK::INVALID_CREDENTIAL);
+            }
+
+            $credential = $result['SessionAccessKey'];
+            $this->cache($credential);
+        }
+
+        return new StsCredential(
+            $credential['SessionAccessKeyId'],
+            $credential['SessionAccessKeySecret']
+        );
+    }
+
+    /**
+     * Get credentials by request.
+     *
+     * @param $timeout
+     * @param $connectTimeout
+     *
+     * @return Result
+     * @throws ClientException
+     * @throws ServerException
+     */
+    private function request($timeout, $connectTimeout)
+    {
+        $clientName = __CLASS__ . \uniqid('rsa', true);
+        $credential = $this->client->getCredential();
+
+        AlibabaCloud::client(
+            new AccessKeyCredential(
+                $credential->getPublicKeyId(),
+                $credential->getPrivateKey()
+            ),
+            new ShaHmac256WithRsaSignature()
+        )->name($clientName);
+
+        return (new GenerateSessionAccessKey($credential->getPublicKeyId()))
+            ->client($clientName)
+            ->timeout($timeout)
+            ->connectTimeout($connectTimeout)
+            ->debug($this->client->isDebug())
+            ->request();
+    }
+}

+ 110 - 0
vendor/alibabacloud/client/src/Credentials/RamRoleArnCredential.php

xqd
@@ -0,0 +1,110 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials;
+
+use AlibabaCloud\Client\Filter\CredentialFilter;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Use the AssumeRole of the RAM account to complete  the authentication.
+ *
+ * @package   AlibabaCloud\Client\Credentials
+ */
+class RamRoleArnCredential implements CredentialsInterface
+{
+
+    /**
+     * @var string
+     */
+    private $accessKeyId;
+
+    /**
+     * @var string
+     */
+    private $accessKeySecret;
+
+    /**
+     * @var string
+     */
+    private $roleArn;
+
+    /**
+     * @var string
+     */
+    private $roleSessionName;
+
+    /**
+     * @var string
+     */
+    private $policy;
+
+    /**
+     * Class constructor.
+     *
+     * @param string       $accessKeyId
+     * @param string       $accessKeySecret
+     * @param string       $roleArn
+     * @param string       $roleSessionName
+     * @param string|array $policy
+     *
+     * @throws ClientException
+     */
+    public function __construct($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName, $policy = '')
+    {
+        CredentialFilter::AccessKey($accessKeyId, $accessKeySecret);
+
+        $this->accessKeyId     = $accessKeyId;
+        $this->accessKeySecret = $accessKeySecret;
+        $this->roleArn         = $roleArn;
+        $this->roleSessionName = $roleSessionName;
+        $this->policy          = $policy;
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeyId()
+    {
+        return $this->accessKeyId;
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeySecret()
+    {
+        return $this->accessKeySecret;
+    }
+
+    /**
+     * @return string
+     */
+    public function getRoleArn()
+    {
+        return $this->roleArn;
+    }
+
+    /**
+     * @return string
+     */
+    public function getRoleSessionName()
+    {
+        return $this->roleSessionName;
+    }
+
+    /**
+     * @return string
+     */
+    public function getPolicy()
+    {
+        return $this->policy;
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "$this->accessKeyId#$this->accessKeySecret#$this->roleArn#$this->roleSessionName";
+    }
+}

+ 47 - 0
vendor/alibabacloud/client/src/Credentials/Requests/AssumeRole.php

xqd
@@ -0,0 +1,47 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials\Requests;
+
+use AlibabaCloud\Client\Request\RpcRequest;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Credentials\Providers\Provider;
+use AlibabaCloud\Client\Credentials\RamRoleArnCredential;
+
+/**
+ * Retrieving assume role credentials.
+ *
+ * @package   AlibabaCloud\Client\Credentials\Requests
+ */
+class AssumeRole extends RpcRequest
+{
+
+    /**
+     * AssumeRole constructor.
+     *
+     * @param RamRoleArnCredential $arnCredential
+     *
+     * @throws ClientException
+     */
+    public function __construct(RamRoleArnCredential $arnCredential)
+    {
+        parent::__construct();
+        $this->product('Sts');
+        $this->version('2015-04-01');
+        $this->action('AssumeRole');
+        $this->host('sts.aliyuncs.com');
+        $this->scheme('https');
+        $this->regionId('cn-hangzhou');
+        $this->options['verify']                   = false;
+        $this->options['query']['RoleArn']         = $arnCredential->getRoleArn();
+        $this->options['query']['RoleSessionName'] = $arnCredential->getRoleSessionName();
+        $this->options['query']['DurationSeconds'] = Provider::DURATION_SECONDS;
+        if ($arnCredential->getPolicy()) {
+            if (is_array($arnCredential->getPolicy())) {
+                $this->options['query']['Policy'] = json_encode($arnCredential->getPolicy());
+            }
+            if (is_string($arnCredential->getPolicy())) {
+                $this->options['query']['Policy'] = $arnCredential->getPolicy();
+            }
+        }
+    }
+}

+ 37 - 0
vendor/alibabacloud/client/src/Credentials/Requests/GenerateSessionAccessKey.php

xqd
@@ -0,0 +1,37 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials\Requests;
+
+use AlibabaCloud\Client\Request\RpcRequest;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Credentials\Providers\Provider;
+
+/**
+ * Use the RSA key pair to complete the authentication (supported only on Japanese site)
+ *
+ * @package   AlibabaCloud\Client\Credentials\Requests
+ */
+class GenerateSessionAccessKey extends RpcRequest
+{
+
+    /**
+     * GenerateSessionAccessKey constructor.
+     *
+     * @param string $publicKeyId
+     *
+     * @throws ClientException
+     */
+    public function __construct($publicKeyId)
+    {
+        parent::__construct();
+        $this->product('Sts');
+        $this->version('2015-04-01');
+        $this->action('GenerateSessionAccessKey');
+        $this->host('sts.ap-northeast-1.aliyuncs.com');
+        $this->scheme('https');
+        $this->regionId('cn-hangzhou');
+        $this->options['verify']                   = false;
+        $this->options['query']['PublicKeyId']     = $publicKeyId;
+        $this->options['query']['DurationSeconds'] = Provider::DURATION_SECONDS;
+    }
+}

+ 75 - 0
vendor/alibabacloud/client/src/Credentials/RsaKeyPairCredential.php

xqd
@@ -0,0 +1,75 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials;
+
+use Exception;
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Filter\CredentialFilter;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Use the RSA key pair to complete the authentication (supported only on Japanese site)
+ *
+ * @package   AlibabaCloud\Client\Credentials
+ */
+class RsaKeyPairCredential implements CredentialsInterface
+{
+
+    /**
+     * @var string
+     */
+    private $publicKeyId;
+
+    /**
+     * @var string
+     */
+    private $privateKey;
+
+    /**
+     * RsaKeyPairCredential constructor.
+     *
+     * @param string $publicKeyId
+     * @param string $privateKeyFile
+     *
+     * @throws ClientException
+     */
+    public function __construct($publicKeyId, $privateKeyFile)
+    {
+        CredentialFilter::publicKeyId($publicKeyId);
+        CredentialFilter::privateKeyFile($privateKeyFile);
+
+        $this->publicKeyId = $publicKeyId;
+        try {
+            $this->privateKey = file_get_contents($privateKeyFile);
+        } catch (Exception $exception) {
+            throw new ClientException(
+                $exception->getMessage(),
+                SDK::INVALID_CREDENTIAL
+            );
+        }
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getPrivateKey()
+    {
+        return $this->privateKey;
+    }
+
+    /**
+     * @return string
+     */
+    public function getPublicKeyId()
+    {
+        return $this->publicKeyId;
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "publicKeyId#$this->publicKeyId";
+    }
+}

+ 80 - 0
vendor/alibabacloud/client/src/Credentials/StsCredential.php

xqd
@@ -0,0 +1,80 @@
+<?php
+
+namespace AlibabaCloud\Client\Credentials;
+
+use AlibabaCloud\Client\Filter\CredentialFilter;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Use the STS Token to complete the authentication.
+ *
+ * @package   AlibabaCloud\Client\Credentials
+ */
+class StsCredential implements CredentialsInterface
+{
+
+    /**
+     * @var string
+     */
+    private $accessKeyId;
+
+    /**
+     * @var string
+     */
+    private $accessKeySecret;
+
+    /**
+     * @var string
+     */
+    private $securityToken;
+
+    /**
+     * StsCredential constructor.
+     *
+     * @param string $accessKeyId     Access key ID
+     * @param string $accessKeySecret Access Key Secret
+     * @param string $securityToken   Security Token
+     *
+     * @throws ClientException
+     */
+    public function __construct($accessKeyId, $accessKeySecret, $securityToken = '')
+    {
+        CredentialFilter::AccessKey($accessKeyId, $accessKeySecret);
+
+        $this->accessKeyId     = $accessKeyId;
+        $this->accessKeySecret = $accessKeySecret;
+        $this->securityToken   = $securityToken;
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeyId()
+    {
+        return $this->accessKeyId;
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeySecret()
+    {
+        return $this->accessKeySecret;
+    }
+
+    /**
+     * @return string
+     */
+    public function getSecurityToken()
+    {
+        return $this->securityToken;
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "$this->accessKeyId#$this->accessKeySecret#$this->securityToken";
+    }
+}

+ 55 - 0
vendor/alibabacloud/client/src/DefaultAcsClient.php

xqd
@@ -0,0 +1,55 @@
+<?php
+
+namespace AlibabaCloud\Client;
+
+use AlibabaCloud\Client\Result\Result;
+use AlibabaCloud\Client\Clients\Client;
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+
+/**
+ * Class DefaultAcsClient
+ *
+ * @package    AlibabaCloud
+ *
+ * @deprecated deprecated since version 2.0, Use AlibabaCloud instead.
+ * @codeCoverageIgnore
+ */
+class DefaultAcsClient
+{
+
+    /**
+     * @var string
+     */
+    public $randClientName;
+
+    /**
+     * DefaultAcsClient constructor.
+     *
+     * @param Client $client
+     *
+     * @throws ClientException
+     */
+    public function __construct(Client $client)
+    {
+        $this->randClientName = \uniqid('', true);
+        $client->name($this->randClientName);
+    }
+
+    /**
+     * @param Request|Result $request
+     *
+     * @return Result|string
+     * @throws ClientException
+     * @throws ServerException
+     */
+    public function getAcsResponse($request)
+    {
+        if ($request instanceof Result) {
+            return $request;
+        }
+
+        return $request->client($this->randClientName)->request();
+    }
+}

+ 68 - 0
vendor/alibabacloud/client/src/Encode.php

xqd
@@ -0,0 +1,68 @@
+<?php
+
+namespace AlibabaCloud\Client;
+
+/**
+ * Class Encode
+ *
+ * @package AlibabaCloud\Client
+ */
+class Encode
+{
+    /**
+     * @var array
+     */
+    private $data;
+
+    /**
+     * @param array $data
+     *
+     * @return static
+     */
+    public static function create(array $data)
+    {
+        return new static($data);
+    }
+
+    /**
+     * Encode constructor.
+     *
+     * @param array $data
+     */
+    private function __construct(array $data)
+    {
+        $this->data = $data;
+    }
+
+    /**
+     * @return bool|string
+     */
+    public function toString()
+    {
+        $string = '';
+        foreach ($this->data as $key => $value) {
+            $encode = rawurlencode($value);
+            if ($encode === '') {
+                $string .= "$key&";
+            } else {
+                $string .= "$key=$encode&";
+            }
+        }
+
+        if (0 < count($this->data)) {
+            $string = substr($string, 0, -1);
+        }
+
+        return $string;
+    }
+
+    /**
+     * @return $this
+     */
+    public function ksort()
+    {
+        ksort($this->data);
+
+        return $this;
+    }
+}

+ 70 - 0
vendor/alibabacloud/client/src/Exception/AlibabaCloudException.php

xqd
@@ -0,0 +1,70 @@
+<?php
+
+namespace AlibabaCloud\Client\Exception;
+
+use Exception;
+use RuntimeException;
+
+/**
+ * Class AlibabaCloudException
+ *
+ * @package   AlibabaCloud\Client\Exception
+ */
+abstract class AlibabaCloudException extends Exception
+{
+
+    /**
+     * @var string
+     */
+    protected $errorCode;
+
+    /**
+     * @var string
+     */
+    protected $errorMessage;
+
+    /**
+     * @return string
+     */
+    public function getErrorCode()
+    {
+        return $this->errorCode;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     * @deprecated
+     */
+    public function setErrorCode()
+    {
+        throw new RuntimeException('deprecated since 2.0.');
+    }
+
+    /**
+     * @return string
+     */
+    public function getErrorMessage()
+    {
+        return $this->errorMessage;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     *
+     * @param $errorMessage
+     *
+     * @deprecated
+     */
+    public function setErrorMessage($errorMessage)
+    {
+        $this->errorMessage = $errorMessage;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     * @deprecated
+     */
+    public function setErrorType()
+    {
+    }
+}

+ 38 - 0
vendor/alibabacloud/client/src/Exception/ClientException.php

xqd
@@ -0,0 +1,38 @@
+<?php
+
+namespace AlibabaCloud\Client\Exception;
+
+use Exception;
+use RuntimeException;
+
+/**
+ * Class ClientException
+ *
+ * @package   AlibabaCloud\Client\Exception
+ */
+class ClientException extends AlibabaCloudException
+{
+
+    /**
+     * ClientException constructor.
+     *
+     * @param string         $errorMessage
+     * @param string         $errorCode
+     * @param Exception|null $previous
+     */
+    public function __construct($errorMessage, $errorCode, $previous = null)
+    {
+        parent::__construct($errorMessage, 0, $previous);
+        $this->errorMessage = $errorMessage;
+        $this->errorCode    = $errorCode;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     * @deprecated
+     */
+    public function getErrorType()
+    {
+        return 'Client';
+    }
+}

+ 158 - 0
vendor/alibabacloud/client/src/Exception/ServerException.php

xqd
@@ -0,0 +1,158 @@
+<?php
+
+namespace AlibabaCloud\Client\Exception;
+
+use Stringy\Stringy;
+use RuntimeException;
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Result\Result;
+
+/**
+ * Class ServerException
+ *
+ * @package   AlibabaCloud\Client\Exception
+ */
+class ServerException extends AlibabaCloudException
+{
+
+    /**
+     * @var string
+     */
+    protected $requestId;
+
+    /**
+     * @var Result
+     */
+    protected $result;
+
+    /**
+     * ServerException constructor.
+     *
+     * @param Result|null $result
+     * @param string      $errorMessage
+     * @param string      $errorCode
+     */
+    public function __construct(
+        Result $result,
+        $errorMessage = SDK::RESPONSE_EMPTY,
+        $errorCode = SDK::SERVICE_UNKNOWN_ERROR
+    ) {
+        $this->result       = $result;
+        $this->errorMessage = $errorMessage;
+        $this->errorCode    = $errorCode;
+        $this->resolvePropertiesByReturn();
+        $this->distinguishSignatureErrors();
+        $this->bodyAsErrorMessage();
+
+        parent::__construct(
+            $this->getMessageString(),
+            $this->result->getStatusCode()
+        );
+    }
+
+    /**
+     * Resolve the error message based on the return of the server.
+     *
+     * @return void
+     */
+    private function resolvePropertiesByReturn()
+    {
+        if (isset($this->result['message'])) {
+            $this->errorMessage = $this->result['message'];
+            $this->errorCode    = $this->result['code'];
+        }
+        if (isset($this->result['Message'])) {
+            $this->errorMessage = $this->result['Message'];
+            $this->errorCode    = $this->result['Code'];
+        }
+        if (isset($this->result['errorMsg'])) {
+            $this->errorMessage = $this->result['errorMsg'];
+            $this->errorCode    = $this->result['errorCode'];
+        }
+        if (isset($this->result['requestId'])) {
+            $this->requestId = $this->result['requestId'];
+        }
+        if (isset($this->result['RequestId'])) {
+            $this->requestId = $this->result['RequestId'];
+        }
+    }
+
+    /**
+     * If the string to be signed are the same with server's, it is considered a credential error.
+     */
+    private function distinguishSignatureErrors()
+    {
+        if ($this->result->getRequest()
+            && Stringy::create($this->errorMessage)->contains($this->result->getRequest()->stringToSign())) {
+            $this->errorCode    = 'InvalidAccessKeySecret';
+            $this->errorMessage = 'Specified Access Key Secret is not valid.';
+        }
+    }
+
+    /**
+     * If the error message matches the default message and
+     * the server has returned content, use the return content
+     */
+    private function bodyAsErrorMessage()
+    {
+        $body = (string)$this->result->getBody();
+        if ($this->errorMessage === SDK::RESPONSE_EMPTY && $body) {
+            $this->errorMessage = $body;
+        }
+    }
+
+    /**
+     * Get standard exception message.
+     *
+     * @return string
+     */
+    private function getMessageString()
+    {
+        $message = "$this->errorCode: $this->errorMessage RequestId: $this->requestId";
+
+        if ($this->getResult()->getRequest()) {
+            $method  = $this->getResult()->getRequest()->method;
+            $uri     = (string)$this->getResult()->getRequest()->uri;
+            $message .= " $method \"$uri\"";
+            if ($this->result) {
+                $message .= ' ' . $this->result->getStatusCode();
+            }
+        }
+
+        return $message;
+    }
+
+    /**
+     * @return Result
+     */
+    public function getResult()
+    {
+        return $this->result;
+    }
+
+    /**
+     * @return string
+     */
+    public function getRequestId()
+    {
+        return $this->requestId;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     * @deprecated
+     */
+    public function getErrorType()
+    {
+        return 'Server';
+    }
+
+    /**
+     * @codeCoverageIgnore
+     * @deprecated
+     */
+    public function getHttpStatus()
+    {
+        return $this->getResult()->getStatusCode();
+    }
+}

+ 259 - 0
vendor/alibabacloud/client/src/Filter/ApiFilter.php

xqd
@@ -0,0 +1,259 @@
+<?php
+
+namespace AlibabaCloud\Client\Filter;
+
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class ApiFilter
+ *
+ * @package AlibabaCloud\Client\Filter
+ */
+class ApiFilter
+{
+    /**
+     * @param $serviceCode
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function serviceCode($serviceCode)
+    {
+        if (!is_string($serviceCode)) {
+            throw new ClientException(
+                'Service Code must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($serviceCode === '') {
+            throw new ClientException(
+                'Service Code cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $serviceCode;
+    }
+
+    /**
+     * @param $endpointType
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function endpointType($endpointType)
+    {
+        if (!is_string($endpointType)) {
+            throw new ClientException(
+                'Endpoint Type must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($endpointType === '') {
+            throw new ClientException(
+                'Endpoint Type cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $endpointType;
+    }
+
+    /**
+     * @param $action
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function action($action)
+    {
+        if (!is_string($action)) {
+            throw new ClientException(
+                'Action must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($action === '') {
+            throw new ClientException(
+                'Action cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $action;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     *
+     * @param string $endpointSuffix
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function endpointSuffix($endpointSuffix)
+    {
+        if (!is_string($endpointSuffix)) {
+            throw new ClientException(
+                'Endpoint Suffix must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($endpointSuffix === '') {
+            throw new ClientException(
+                'Endpoint Suffix cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if (!preg_match("/^[a-zA-Z0-9_-]+$/", $endpointSuffix)) {
+            throw new ClientException(
+                'Invalid Endpoint Suffix',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $endpointSuffix;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     *
+     * @param string $network
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function network($network)
+    {
+        if (!is_string($network)) {
+            throw new ClientException(
+                'Network Suffix must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($network === '') {
+            throw new ClientException(
+                'Network Suffix cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if (!preg_match("/^[a-zA-Z0-9_-]+$/", $network)) {
+            throw new ClientException(
+                'Invalid Network Suffix',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $network;
+    }
+
+    /**
+     * @param string $version
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function version($version)
+    {
+        if (!is_string($version)) {
+            throw new ClientException(
+                'Version must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($version === '') {
+            throw new ClientException(
+                'Version cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $version;
+    }
+
+    /**
+     * @param $format
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function format($format)
+    {
+        if (!is_string($format)) {
+            throw new ClientException(
+                'Format must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($format === '') {
+            throw new ClientException(
+                'Format cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return \strtoupper($format);
+    }
+
+    /**
+     * @param $product
+     *
+     * @return string
+     *
+     * @throws ClientException
+     */
+    public static function product($product)
+    {
+        if (!is_string($product)) {
+            throw new ClientException(
+                'Product must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($product === '') {
+            throw new ClientException(
+                'Product cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $product;
+    }
+
+    /**
+     * @param $pattern
+     *
+     * @return string
+     *
+     * @throws ClientException
+     */
+    public static function pattern($pattern)
+    {
+        if (!is_string($pattern)) {
+            throw new ClientException(
+                'Pattern must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($pattern === '') {
+            throw new ClientException(
+                'Pattern cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $pattern;
+    }
+}

+ 146 - 0
vendor/alibabacloud/client/src/Filter/ClientFilter.php

xqd
@@ -0,0 +1,146 @@
+<?php
+
+namespace AlibabaCloud\Client\Filter;
+
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class ClientFilter
+ *
+ * @package AlibabaCloud\Client\Filter
+ */
+class ClientFilter
+{
+    /**
+     * @param $regionId
+     *
+     * @return string
+     *
+     * @throws ClientException
+     */
+    public static function regionId($regionId)
+    {
+        if (!is_string($regionId)) {
+            throw new ClientException(
+                'Region ID must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($regionId === '') {
+            throw new ClientException(
+                'Region ID cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if (!preg_match("/^[a-zA-Z0-9_-]+$/", $regionId)) {
+            throw new ClientException(
+                'Invalid Region ID',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return strtolower($regionId);
+    }
+
+    /**
+     * @param $clientName
+     *
+     * @return string
+     *
+     * @throws ClientException
+     */
+    public static function clientName($clientName)
+    {
+        if (!is_string($clientName)) {
+            throw new ClientException(
+                'Client Name must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($clientName === '') {
+            throw new ClientException(
+                'Client Name cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return strtolower($clientName);
+    }
+
+    /**
+     * @param $times
+     *
+     * @return string
+     *
+     * @throws ClientException
+     */
+    public static function retry($times)
+    {
+        if (!is_int($times)) {
+            throw new ClientException(
+                'Retry must be a int',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $times;
+    }
+
+    /**
+     * @param $connectTimeout
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function connectTimeout($connectTimeout)
+    {
+        if ($connectTimeout === '') {
+            throw new ClientException(
+                'Connect Timeout cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $connectTimeout;
+    }
+
+    /**
+     * @param $timeout
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function timeout($timeout)
+    {
+        if ($timeout === '') {
+            throw new ClientException(
+                'Timeout cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $timeout;
+    }
+
+    /**
+     * @param int $Milliseconds
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function milliseconds($Milliseconds)
+    {
+        if (!is_int($Milliseconds)) {
+            throw new ClientException(
+                'Milliseconds must be int',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $Milliseconds;
+    }
+}

+ 152 - 0
vendor/alibabacloud/client/src/Filter/CredentialFilter.php

xqd
@@ -0,0 +1,152 @@
+<?php
+
+namespace AlibabaCloud\Client\Filter;
+
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class CredentialFilter
+ *
+ * @package AlibabaCloud\Client\Filter
+ */
+class CredentialFilter
+{
+    /**
+     * @param $bearerToken
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function bearerToken($bearerToken)
+    {
+        if (!is_string($bearerToken)) {
+            throw new ClientException(
+                'Bearer Token must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($bearerToken === '') {
+            throw new ClientException(
+                'Bearer Token cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $bearerToken;
+    }
+
+    /**
+     * @param $publicKeyId
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function publicKeyId($publicKeyId)
+    {
+        if (!is_string($publicKeyId)) {
+            throw new ClientException(
+                'Public Key ID must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($publicKeyId === '') {
+            throw new ClientException(
+                'Public Key ID cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $publicKeyId;
+    }
+
+    /**
+     * @param $privateKeyFile
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function privateKeyFile($privateKeyFile)
+    {
+        if (!is_string($privateKeyFile)) {
+            throw new ClientException(
+                'Private Key File must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($privateKeyFile === '') {
+            throw new ClientException(
+                'Private Key File cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $privateKeyFile;
+    }
+
+    /**
+     * @param $roleName
+     *
+     * @return string
+     *
+     * @throws ClientException
+     */
+    public static function roleName($roleName)
+    {
+        if (!is_string($roleName)) {
+            throw new ClientException(
+                'Role Name must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($roleName === '') {
+            throw new ClientException(
+                'Role Name cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $roleName;
+    }
+
+    /**
+     * @param string $accessKeyId
+     * @param string $accessKeySecret
+     *
+     * @throws ClientException
+     */
+    public static function AccessKey($accessKeyId, $accessKeySecret)
+    {
+        if (!is_string($accessKeyId)) {
+            throw new ClientException(
+                'AccessKey ID must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($accessKeyId === '') {
+            throw new ClientException(
+                'AccessKey ID cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if (!is_string($accessKeySecret)) {
+            throw new ClientException(
+                'AccessKey Secret must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($accessKeySecret === '') {
+            throw new ClientException(
+                'AccessKey Secret cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+    }
+}

+ 67 - 0
vendor/alibabacloud/client/src/Filter/Filter.php

xqd
@@ -0,0 +1,67 @@
+<?php
+
+namespace AlibabaCloud\Client\Filter;
+
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class Filter
+ *
+ * @package AlibabaCloud\Client\Filter
+ */
+class Filter
+{
+
+    /**
+     * @param $name
+     *
+     * @return string
+     *
+     * @throws ClientException
+     */
+    public static function name($name)
+    {
+        if (!is_string($name)) {
+            throw new ClientException(
+                'Name must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($name === '') {
+            throw new ClientException(
+                'Name cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $name;
+    }
+
+    /**
+     * @param $value
+     *
+     * @return string
+     *
+     * @throws ClientException
+     */
+    public static function value($value)
+    {
+        if (!is_numeric($value) && !is_string($value)) {
+            throw new ClientException(
+                'Value must be a string or int',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($value === '') {
+            throw new ClientException(
+                'Value cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $value;
+    }
+}

+ 166 - 0
vendor/alibabacloud/client/src/Filter/HttpFilter.php

xqd
@@ -0,0 +1,166 @@
+<?php
+
+namespace AlibabaCloud\Client\Filter;
+
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class HttpFilter
+ *
+ * @package AlibabaCloud\Client\Filter
+ */
+class HttpFilter
+{
+    /**
+     * @param $host
+     *
+     * @return string
+     *
+     * @throws ClientException
+     */
+    public static function host($host)
+    {
+        if (!is_string($host)) {
+            throw new ClientException(
+                'Host must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($host === '') {
+            throw new ClientException(
+                'Host cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $host;
+    }
+
+    /**
+     * @param $scheme
+     *
+     * @return string
+     *
+     * @throws ClientException
+     */
+    public static function scheme($scheme)
+    {
+        if (!is_string($scheme)) {
+            throw new ClientException(
+                'Scheme must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($scheme === '') {
+            throw new ClientException(
+                'Scheme cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $scheme;
+    }
+
+    /**
+     * @param $body
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function body($body)
+    {
+        if (!is_string($body) && !is_numeric($body)) {
+            throw new ClientException(
+                'Body must be a string or int',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($body === '') {
+            throw new ClientException(
+                'Body cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $body;
+    }
+
+    /**
+     * @param $method
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function method($method)
+    {
+        if (!is_string($method)) {
+            throw new ClientException(
+                'Method must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($method === '') {
+            throw new ClientException(
+                'Method cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return \strtoupper($method);
+    }
+
+    /**
+     * @param $contentType
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function contentType($contentType)
+    {
+        if (!is_string($contentType)) {
+            throw new ClientException(
+                'Content-Type must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($contentType === '') {
+            throw new ClientException(
+                'Content-Type cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $contentType;
+    }
+
+    /**
+     * @param $accept
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function accept($accept)
+    {
+        if (!is_string($accept)) {
+            throw new ClientException(
+                'Accept must be a string',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if ($accept === '') {
+            throw new ClientException(
+                'Accept cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $accept;
+    }
+}

+ 289 - 0
vendor/alibabacloud/client/src/Functions.php

xqd
@@ -0,0 +1,289 @@
+<?php
+
+namespace AlibabaCloud\Client;
+
+use Closure;
+use Stringy\Stringy;
+use League\CLImate\CLImate;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/*
+|--------------------------------------------------------------------------
+| Global Functions for Alibaba Cloud
+|--------------------------------------------------------------------------
+|
+| Some common global functions are defined here.
+| This file will be automatically loaded.
+|
+*/
+
+/**
+ * @param      $filename
+ * @param bool $throwException
+ *
+ * @return bool
+ * @throws ClientException
+ */
+function inOpenBasedir($filename, $throwException = false)
+{
+    $open_basedir = ini_get('open_basedir');
+    if (!$open_basedir) {
+        return true;
+    }
+
+    $dirs = explode(PATH_SEPARATOR, $open_basedir);
+    if (empty($dirs)) {
+        return true;
+    }
+
+    if (inDir($filename, $dirs)) {
+        return true;
+    }
+
+    if ($throwException === false) {
+        return false;
+    }
+
+    throw new ClientException(
+        'open_basedir restriction in effect. '
+        . "File($filename) is not within the allowed path(s): ($open_basedir)",
+        'SDK.InvalidPath'
+    );
+}
+
+/**
+ * @param string $filename
+ * @param array  $dirs
+ *
+ * @return bool
+ */
+function inDir($filename, array $dirs)
+{
+    foreach ($dirs as $dir) {
+        if (!Stringy::create($dir)->endsWith(DIRECTORY_SEPARATOR)) {
+            $dir .= DIRECTORY_SEPARATOR;
+        }
+
+        if (0 === strpos($filename, $dir)) {
+            return true;
+        }
+    }
+
+    return false;
+}
+
+/**
+ * @return bool
+ */
+function isWindows()
+{
+    return PATH_SEPARATOR === ';';
+}
+
+/**
+ * @return CLImate
+ */
+function cliMate()
+{
+    return new CLImate();
+}
+
+/**
+ * @param string      $string
+ * @param string|null $flank
+ * @param string|null $char
+ * @param int|null    $length
+ *
+ * @return void
+ */
+function backgroundRed($string, $flank = null, $char = null, $length = null)
+{
+    cliMate()->br();
+    if ($flank !== null) {
+        cliMate()->backgroundRed()->flank($flank, $char, $length);
+        cliMate()->br();
+    }
+    cliMate()->backgroundRed($string);
+    cliMate()->br();
+}
+
+/**
+ * @param string      $string
+ * @param string|null $flank
+ * @param string|null $char
+ * @param int|null    $length
+ *
+ * @return void
+ */
+function backgroundGreen($string, $flank = null, $char = null, $length = null)
+{
+    cliMate()->br();
+    if ($flank !== null) {
+        cliMate()->backgroundGreen()->flank($flank, $char, $length);
+    }
+    cliMate()->backgroundGreen($string);
+    cliMate()->br();
+}
+
+/**
+ * @param string      $string
+ * @param string|null $flank
+ * @param string|null $char
+ * @param int|null    $length
+ *
+ * @return void
+ */
+function backgroundBlue($string, $flank = null, $char = null, $length = null)
+{
+    cliMate()->br();
+    if ($flank !== null) {
+        cliMate()->backgroundBlue()->flank($flank, $char, $length);
+    }
+    cliMate()->backgroundBlue($string);
+    cliMate()->br();
+}
+
+/**
+ * @param string      $string
+ * @param string|null $flank
+ * @param string|null $char
+ * @param int|null    $length
+ *
+ * @return void
+ */
+function backgroundMagenta($string, $flank = null, $char = null, $length = null)
+{
+    cliMate()->br();
+    if ($flank !== null) {
+        cliMate()->backgroundMagenta()->flank($flank, $char, $length);
+    }
+    cliMate()->backgroundMagenta($string);
+    cliMate()->br();
+}
+
+/**
+ * @param array $array
+ */
+function json(array $array)
+{
+    cliMate()->br();
+    cliMate()->backgroundGreen()->json($array);
+    cliMate()->br();
+}
+
+/**
+ * @param array $array
+ *
+ * @return void
+ */
+function redTable($array)
+{
+    /**
+     * @noinspection PhpUndefinedMethodInspection
+     */
+    cliMate()->redTable($array);
+}
+
+/**
+ * @param mixed  $result
+ * @param string $title
+ *
+ * @return void
+ */
+function block($result, $title)
+{
+    cliMate()->backgroundGreen()->flank($title, '--', 20);
+    dump($result);
+}
+
+/**
+ * Gets the value of an environment variable.
+ *
+ * @param string $key
+ * @param mixed  $default
+ *
+ * @return mixed
+ */
+function env($key, $default = null)
+{
+    $value = getenv($key);
+
+    if ($value === false) {
+        return value($default);
+    }
+
+    if (envSubstr($value)) {
+        return substr($value, 1, -1);
+    }
+
+    return envConversion($value);
+}
+
+/**
+ * @param $value
+ *
+ * @return bool|string|null
+ */
+function envConversion($value)
+{
+    $key = strtolower($value);
+
+    if ($key === 'null' || $key === '(null)') {
+        return null;
+    }
+
+    $list = [
+        'true'    => true,
+        '(true)'  => true,
+        'false'   => false,
+        '(false)' => false,
+        'empty'   => '',
+        '(empty)' => '',
+    ];
+
+    return isset($list[$key]) ? $list[$key] : $value;
+}
+
+/**
+ * @param $key
+ *
+ * @return bool|mixed
+ * @throws ClientException
+ */
+function envNotEmpty($key)
+{
+    $value = env($key, false);
+    if ($value !== false && !$value) {
+        throw new ClientException(
+            "Environment variable '$key' cannot be empty",
+            SDK::INVALID_ARGUMENT
+        );
+    }
+    if ($value) {
+        return $value;
+    }
+
+    return false;
+}
+
+/**
+ * @param $value
+ *
+ * @return bool
+ */
+function envSubstr($value)
+{
+    return ($valueLength = strlen($value)) > 1 && strpos($value, '"') === 0 && $value[$valueLength - 1] === '"';
+}
+
+/**
+ * Return the default value of the given value.
+ *
+ * @param mixed $value
+ *
+ * @return mixed
+ */
+function value($value)
+{
+    return $value instanceof Closure ? $value() : $value;
+}

+ 79 - 0
vendor/alibabacloud/client/src/Log/LogFormatter.php

xqd
@@ -0,0 +1,79 @@
+<?php
+
+namespace AlibabaCloud\Client\Log;
+
+use DateTime;
+use Exception;
+use DateTimeZone;
+use GuzzleHttp\MessageFormatter;
+use Psr\Http\Message\RequestInterface;
+use Psr\Http\Message\ResponseInterface;
+
+/**
+ * @deprecated Use GuzzleHttp\MessageFormatter.
+ * Class LogFormatter
+ *
+ * @package AlibabaCloud\Client\Log
+ */
+class LogFormatter
+{
+    /**
+     * @var float
+     */
+    private static $logStartTime = 0;
+
+    /**
+     * @var DateTime
+     */
+    private static $ts;
+
+    /** @var string Template used to format log messages */
+    public $template;
+
+    /**
+     * @param string $template Log message template
+     *
+     * @throws Exception
+     */
+    public function __construct($template)
+    {
+        parent::__construct($template);
+        self::$logStartTime = microtime(true);
+        $this->template     = $template;
+        $timezone           = new DateTimeZone(date_default_timezone_get() ?: 'UTC');
+        if (PHP_VERSION_ID < 70100) {
+            self::$ts = DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), $timezone);
+        } else {
+            self::$ts = new DateTime(null, $timezone);
+        }
+    }
+
+    /**
+     * Returns a formatted message string.
+     *
+     * @param RequestInterface  $request  Request that was sent
+     * @param ResponseInterface $response Response that was received
+     * @param Exception         $error    Exception that was received
+     *
+     * @return string
+     */
+    public function format(
+        RequestInterface $request,
+        ResponseInterface $response = null,
+        Exception $error = null
+    ) {
+        $this->template = str_replace('{pid}', getmypid(), $this->template);
+        $this->template = str_replace('{cost}', self::getCost(), $this->template);
+        $this->template = str_replace('{start_time}', self::$ts->format('Y-m-d H:i:s.u'), $this->template);
+
+        return (new MessageFormatter($this->template))->format($request, $response, $error);
+    }
+
+    /**
+     * @return float|mixed
+     */
+    private static function getCost()
+    {
+        return microtime(true) - self::$logStartTime;
+    }
+}

+ 74 - 0
vendor/alibabacloud/client/src/Profile/DefaultProfile.php

xqd
@@ -0,0 +1,74 @@
+<?php
+
+namespace AlibabaCloud\Client\Profile;
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Clients\Client;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class DefaultProfile
+ *
+ * @package    AlibabaCloud\Client\Profile
+ * @codeCoverageIgnore
+ * @deprecated deprecated since version 2.0, Use AlibabaCloud instead.
+ */
+class DefaultProfile
+{
+
+    /**
+     * @param string $regionId
+     * @param string $accessKeyId
+     * @param string $accessKeySecret
+     *
+     * @return Client
+     * @throws ClientException
+     */
+    public static function getProfile($regionId, $accessKeyId, $accessKeySecret)
+    {
+        return AlibabaCloud::accessKeyClient($accessKeyId, $accessKeySecret)
+                           ->regionId($regionId);
+    }
+
+    /**
+     * @param string $regionId
+     * @param string $accessKeyId
+     * @param string $accessKeySecret
+     * @param string $roleArn
+     * @param string $roleSessionName
+     *
+     * @return Client
+     * @throws ClientException
+     */
+    public static function getRamRoleArnProfile($regionId, $accessKeyId, $accessKeySecret, $roleArn, $roleSessionName)
+    {
+        return AlibabaCloud::ramRoleArnClient($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName)
+                           ->regionId($regionId);
+    }
+
+    /**
+     * @param string $regionId
+     * @param string $roleName
+     *
+     * @return Client
+     * @throws ClientException
+     */
+    public static function getEcsRamRoleProfile($regionId, $roleName)
+    {
+        return AlibabaCloud::ecsRamRoleClient($roleName)
+                           ->regionId($regionId);
+    }
+
+    /**
+     * @param string $regionId
+     * @param string $bearerToken
+     *
+     * @return Client
+     * @throws ClientException
+     */
+    public static function getBearerTokenProfile($regionId, $bearerToken)
+    {
+        return AlibabaCloud::bearerTokenClient($bearerToken)
+                           ->regionId($regionId);
+    }
+}

+ 18 - 0
vendor/alibabacloud/client/src/Regions/EndpointProvider.php

xqd
@@ -0,0 +1,18 @@
+<?php
+
+namespace AlibabaCloud\Client\Regions;
+
+use AlibabaCloud\Client\Traits\EndpointTrait;
+
+/**
+ * Class EndpointProvider
+ *
+ * @package    AlibabaCloud\Client\Regions
+ *
+ * @deprecated deprecated since version 2.0, Use AlibabaCloud instead.
+ * @codeCoverageIgnore
+ */
+class EndpointProvider
+{
+    use EndpointTrait;
+}

+ 160 - 0
vendor/alibabacloud/client/src/Regions/LocationService.php

xqd
@@ -0,0 +1,160 @@
+<?php
+
+namespace AlibabaCloud\Client\Regions;
+
+use Exception;
+use RuntimeException;
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Config\Config;
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\Filter\ApiFilter;
+use AlibabaCloud\Client\Filter\HttpFilter;
+use AlibabaCloud\Client\Filter\ClientFilter;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+
+/**
+ * Class LocationService
+ *
+ * @package   AlibabaCloud\Client\Regions
+ */
+class LocationService
+{
+    /**
+     * Global Region Name
+     */
+    const GLOBAL_REGION = 'global';
+
+    /**
+     * @var array
+     */
+    protected static $hosts = [];
+
+    /**
+     * @var Request
+     */
+    protected $request;
+
+    /**
+     * LocationService constructor.
+     *
+     * @param Request $request
+     */
+    private function __construct(Request $request)
+    {
+        $this->request = $request;
+    }
+
+    /**
+     * @param Request $request
+     * @param string  $domain
+     *
+     * @return string
+     * @throws ClientException
+     * @throws ServerException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public static function findProductDomain(Request $request, $domain = 'location.aliyuncs.com')
+    {
+        return self::resolveHost($request, $domain);
+    }
+
+    /**
+     * @param $regionId
+     * @param $product
+     * @param $domain
+     *
+     * @throws ClientException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public static function addEndPoint($regionId, $product, $domain)
+    {
+        self::addHost($product, $domain, $regionId);
+    }
+
+
+    /**
+     * @param Request $request
+     * @param string  $domain
+     *
+     * @return string
+     * @throws ClientException
+     * @throws ServerException
+     */
+    public static function resolveHost(Request $request, $domain = 'location.aliyuncs.com')
+    {
+        $locationService = new static($request);
+        $product         = $locationService->request->product;
+        $regionId        = $locationService->request->realRegionId();
+
+        if (!isset(self::$hosts[$product][$regionId])) {
+            self::$hosts[$product][$regionId] = self::getResult($locationService, $domain);
+        }
+
+        return self::$hosts[$product][$regionId];
+    }
+
+    /**
+     * @param static $locationService
+     * @param string $domain
+     *
+     * @return string
+     * @throws ClientException
+     * @throws ServerException
+     */
+    private static function getResult($locationService, $domain)
+    {
+        $locationRequest = new LocationServiceRequest($locationService->request, $domain);
+
+        $result = $locationRequest->request();
+
+        if (!isset($result['Endpoints']['Endpoint'][0]['Endpoint'])) {
+            throw new ClientException(
+                'Not found Region ID in ' . $domain,
+                SDK::INVALID_REGION_ID
+            );
+        }
+
+        return $result['Endpoints']['Endpoint'][0]['Endpoint'];
+    }
+
+    /**
+     * @param string $product
+     * @param string $host
+     * @param string $regionId
+     *
+     * @throws ClientException
+     */
+    public static function addHost($product, $host, $regionId = self::GLOBAL_REGION)
+    {
+        ApiFilter::product($product);
+
+        HttpFilter::host($host);
+
+        ClientFilter::regionId($regionId);
+
+        self::$hosts[$product][$regionId] = $host;
+    }
+
+    /**
+     * Update endpoints from OSS.
+     *
+     * @codeCoverageIgnore
+     * @throws Exception
+     */
+    public static function updateEndpoints()
+    {
+        $ossUrl = 'https://openapi-endpoints.oss-cn-hangzhou.aliyuncs.com/endpoints.json';
+        $json   = \file_get_contents($ossUrl);
+        $list   = \json_decode($json, true);
+
+        foreach ($list['endpoints'] as $endpoint) {
+            Config::set(
+                "endpoints.{$endpoint['service']}.{$endpoint['regionid']}",
+                \strtolower($endpoint['endpoint'])
+            );
+        }
+    }
+}

+ 46 - 0
vendor/alibabacloud/client/src/Regions/LocationServiceRequest.php

xqd
@@ -0,0 +1,46 @@
+<?php
+
+namespace AlibabaCloud\Client\Regions;
+
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\Request\RpcRequest;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class LocationServiceRequest
+ *
+ * @package   AlibabaCloud\Client\Regions
+ */
+class LocationServiceRequest extends RpcRequest
+{
+
+    /**
+     * LocationServiceRequest constructor.
+     *
+     * @param Request $request
+     * @param string  $domain
+     *
+     * @throws ClientException
+     */
+    public function __construct(Request $request, $domain)
+    {
+        parent::__construct();
+        $this->product('Location');
+        $this->version('2015-06-12');
+        $this->action('DescribeEndpoints');
+        $this->regionId('cn-hangzhou');
+        $this->format('JSON');
+        $this->options['query']['Id']          = $request->realRegionId();
+        $this->options['query']['ServiceCode'] = $request->serviceCode;
+        $this->options['query']['Type']        = $request->endpointType;
+        $this->client($request->client);
+        $this->host($domain);
+        if (isset($request->options['timeout'])) {
+            $this->timeout($request->options['timeout']);
+        }
+
+        if (isset($request->options['connect_timeout'])) {
+            $this->connectTimeout($request->options['connect_timeout']);
+        }
+    }
+}

+ 112 - 0
vendor/alibabacloud/client/src/Release.php

xqd
@@ -0,0 +1,112 @@
+<?php
+
+namespace AlibabaCloud\Client;
+
+use Composer\Script\Event;
+
+/**
+ * Class Release
+ *
+ * @codeCoverageIgnore
+ * @package AlibabaCloud\Client
+ */
+class Release
+{
+    /**
+     * @param Event $event
+     */
+    public static function release(Event $event)
+    {
+        $arguments = $event->getArguments();
+        if (count($arguments) <= 1) {
+            echo 'Missing ChangeLog';
+
+            return;
+        }
+        self::updateChangelogFile($arguments[0], $arguments[1]);
+        self::changeVersionInCode($arguments[0]);
+    }
+
+    /**
+     * @param $version
+     * @param $changeLog
+     */
+    private static function updateChangelogFile($version, $changeLog)
+    {
+        $content = preg_replace(
+            '/# CHANGELOG/',
+            '# CHANGELOG'
+            . "\n"
+            . "\n"
+            . "## $version - " . date('Y-m-d')
+            . self::log($changeLog),
+            self::getChangeLogContent()
+        );
+
+        file_put_contents(self::getChangeLogFile(), $content);
+    }
+
+    /**
+     * @param $changeLog
+     *
+     * @return string
+     */
+    private static function log($changeLog)
+    {
+        $logs   = explode('|', $changeLog);
+        $string = "\n";
+        foreach ($logs as $log) {
+            if ($log) {
+                $string .= "- $log." . "\n";
+            }
+        }
+
+        return $string;
+    }
+
+    /**
+     * @return string
+     */
+    private static function getChangeLogContent()
+    {
+        return file_get_contents(self::getChangeLogFile());
+    }
+
+    /**
+     * @return string
+     */
+    private static function getChangeLogFile()
+    {
+        return __DIR__ . '/../CHANGELOG.md';
+    }
+
+    /**
+     * @param $version
+     */
+    private static function changeVersionInCode($version)
+    {
+        $content = preg_replace(
+            "/const VERSION = \'(.*)\';/",
+            "const VERSION = '" . $version . "';",
+            self::getCodeContent()
+        );
+
+        file_put_contents(self::getCodeFile(), $content);
+    }
+
+    /**
+     * @return string
+     */
+    private static function getCodeContent()
+    {
+        return file_get_contents(self::getCodeFile());
+    }
+
+    /**
+     * @return string
+     */
+    private static function getCodeFile()
+    {
+        return __DIR__ . '/AlibabaCloud.php';
+    }
+}

+ 445 - 0
vendor/alibabacloud/client/src/Request/Request.php

xqd
@@ -0,0 +1,445 @@
+<?php
+
+namespace AlibabaCloud\Client\Request;
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Credentials\Providers\CredentialsProvider;
+use AlibabaCloud\Client\Encode;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+use AlibabaCloud\Client\Filter\ApiFilter;
+use AlibabaCloud\Client\Filter\ClientFilter;
+use AlibabaCloud\Client\Filter\Filter;
+use AlibabaCloud\Client\Filter\HttpFilter;
+use AlibabaCloud\Client\Request\Traits\AcsTrait;
+use AlibabaCloud\Client\Request\Traits\ClientTrait;
+use AlibabaCloud\Client\Request\Traits\DeprecatedTrait;
+use AlibabaCloud\Client\Request\Traits\RetryTrait;
+use AlibabaCloud\Client\Result\Result;
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Traits\ArrayAccessTrait;
+use AlibabaCloud\Client\Traits\HttpTrait;
+use AlibabaCloud\Client\Traits\ObjectAccessTrait;
+use AlibabaCloud\Client\Traits\RegionTrait;
+use ArrayAccess;
+use Exception;
+use GuzzleHttp\Client;
+use GuzzleHttp\Exception\GuzzleException;
+use GuzzleHttp\HandlerStack;
+use GuzzleHttp\MessageFormatter;
+use GuzzleHttp\Middleware;
+use GuzzleHttp\Promise\PromiseInterface;
+use GuzzleHttp\Psr7\Uri;
+use Psr\Http\Message\ResponseInterface;
+
+/**
+ * Class Request
+ *
+ * @package   AlibabaCloud\Client\Request
+ *
+ * @method string stringToSign()
+ * @method string resolveParameter()
+ */
+abstract class Request implements ArrayAccess
+{
+    use DeprecatedTrait;
+    use HttpTrait;
+    use RegionTrait;
+    use ClientTrait;
+    use AcsTrait;
+    use ArrayAccessTrait;
+    use ObjectAccessTrait;
+    use RetryTrait;
+
+    /**
+     * Request Connect Timeout
+     */
+    const CONNECT_TIMEOUT = 5;
+
+    /**
+     * Request Timeout
+     */
+    const TIMEOUT = 10;
+
+    /**
+     * @var string HTTP Method
+     */
+    public $method = 'GET';
+
+    /**
+     * @var string
+     */
+    public $format = 'JSON';
+
+    /**
+     * @var string HTTP Scheme
+     */
+    protected $scheme = 'http';
+
+    /**
+     * @var string
+     */
+    public $client;
+
+    /**
+     * @var Uri
+     */
+    public $uri;
+
+    /**
+     * @var array The original parameters of the request.
+     */
+    public $data = [];
+
+    /**
+     * @var array
+     */
+    private $userAgent = [];
+
+    /**
+     * Request constructor.
+     *
+     * @param array $options
+     *
+     * @throws ClientException
+     */
+    public function __construct(array $options = [])
+    {
+        $this->client                     = CredentialsProvider::getDefaultName();
+        $this->uri                        = new Uri();
+        $this->uri                        = $this->uri->withScheme($this->scheme);
+        $this->options['http_errors']     = false;
+        $this->options['connect_timeout'] = self::CONNECT_TIMEOUT;
+        $this->options['timeout']         = self::TIMEOUT;
+
+        // Turn on debug mode based on environment variable.
+        if (strtolower(\AlibabaCloud\Client\env('DEBUG')) === 'sdk') {
+            $this->options['debug'] = true;
+        }
+
+        // Rewrite configuration if the user has a configuration.
+        if ($options !== []) {
+            $this->options($options);
+        }
+    }
+
+    /**
+     * @param string $name
+     * @param string $value
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function appendUserAgent($name, $value)
+    {
+        $filter_name = Filter::name($name);
+
+        if (!UserAgent::isGuarded($filter_name)) {
+            $this->userAgent[$filter_name] = Filter::value($value);
+        }
+
+        return $this;
+    }
+
+    /**
+     * @param array $userAgent
+     *
+     * @return $this
+     */
+    public function withUserAgent(array $userAgent)
+    {
+        $this->userAgent = UserAgent::clean($userAgent);
+
+        return $this;
+    }
+
+    /**
+     * Set Accept format.
+     *
+     * @param string $format
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function format($format)
+    {
+        $this->format = ApiFilter::format($format);
+
+        return $this;
+    }
+
+    /**
+     * @param $contentType
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function contentType($contentType)
+    {
+        $this->options['headers']['Content-Type'] = HttpFilter::contentType($contentType);
+
+        return $this;
+    }
+
+    /**
+     * @param string $accept
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function accept($accept)
+    {
+        $this->options['headers']['Accept'] = HttpFilter::accept($accept);
+
+        return $this;
+    }
+
+    /**
+     * Set the request body.
+     *
+     * @param string $body
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function body($body)
+    {
+        $this->options['body'] = HttpFilter::body($body);
+
+        return $this;
+    }
+
+    /**
+     * Set the json as body.
+     *
+     * @param array|object $content
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function jsonBody($content)
+    {
+        if (!\is_array($content) && !\is_object($content)) {
+            throw new ClientException(
+                'jsonBody only accepts an array or object',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return $this->body(\json_encode($content));
+    }
+
+    /**
+     * Set the request scheme.
+     *
+     * @param string $scheme
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function scheme($scheme)
+    {
+        $this->scheme = HttpFilter::scheme($scheme);
+        $this->uri    = $this->uri->withScheme($scheme);
+
+        return $this;
+    }
+
+    /**
+     * Set the request host.
+     *
+     * @param string $host
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function host($host)
+    {
+        $this->uri = $this->uri->withHost(HttpFilter::host($host));
+
+        return $this;
+    }
+
+    /**
+     * @param string $method
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function method($method)
+    {
+        $this->method = HttpFilter::method($method);
+
+        return $this;
+    }
+
+    /**
+     * @param string $clientName
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function client($clientName)
+    {
+        $this->client = ClientFilter::clientName($clientName);
+
+        return $this;
+    }
+
+    /**
+     * @return bool
+     * @throws ClientException
+     */
+    public function isDebug()
+    {
+        if (isset($this->options['debug'])) {
+            return $this->options['debug'] === true;
+        }
+
+        if (isset($this->httpClient()->options['debug'])) {
+            return $this->httpClient()->options['debug'] === true;
+        }
+
+        return false;
+    }
+
+    /**
+     * @throws ClientException
+     * @throws ServerException
+     */
+    public function resolveOption()
+    {
+        $this->options['headers']['User-Agent'] = UserAgent::toString($this->userAgent);
+
+        $this->cleanQuery();
+        $this->cleanFormParams();
+        $this->resolveHost();
+        $this->resolveParameter();
+
+        if (isset($this->options['form_params'])) {
+            $this->options['form_params'] = \GuzzleHttp\Psr7\parse_query(
+                Encode::create($this->options['form_params'])->toString()
+            );
+        }
+
+        $this->mergeOptionsIntoClient();
+    }
+
+    /**
+     * @return Result
+     * @throws ClientException
+     * @throws ServerException
+     */
+    public function request()
+    {
+        $this->resolveOption();
+        $result = $this->response();
+
+        if ($this->shouldServerRetry($result)) {
+            return $this->request();
+        }
+
+        if (!$result->isSuccess()) {
+            throw new ServerException($result);
+        }
+
+        return $result;
+    }
+
+    /***
+     * @return PromiseInterface
+     * @throws Exception
+     */
+    public function requestAsync()
+    {
+        $this->resolveOption();
+
+        return self::createClient($this)->requestAsync(
+            $this->method,
+            (string)$this->uri,
+            $this->options
+        );
+    }
+
+    /**
+     * @param Request $request
+     *
+     * @return Client
+     * @throws Exception
+     */
+    public static function createClient(Request $request = null)
+    {
+        if (AlibabaCloud::hasMock()) {
+            $stack = HandlerStack::create(AlibabaCloud::getMock());
+        } else {
+            $stack = HandlerStack::create();
+        }
+
+        if (AlibabaCloud::isRememberHistory()) {
+            $stack->push(Middleware::history(AlibabaCloud::referenceHistory()));
+        }
+
+        if (AlibabaCloud::getLogger()) {
+            $stack->push(Middleware::log(
+                AlibabaCloud::getLogger(),
+                new MessageFormatter(AlibabaCloud::getLogFormat())
+            ));
+        }
+
+        $stack->push(Middleware::mapResponse(static function (ResponseInterface $response) use ($request) {
+            return new Result($response, $request);
+        }));
+
+        self::$config['handler'] = $stack;
+
+        return new Client(self::$config);
+    }
+
+    /**
+     * @throws ClientException
+     * @throws Exception
+     */
+    private function response()
+    {
+        try {
+            return self::createClient($this)->request(
+                $this->method,
+                (string)$this->uri,
+                $this->options
+            );
+        } catch (GuzzleException $exception) {
+            if ($this->shouldClientRetry($exception)) {
+                return $this->response();
+            }
+            throw new ClientException(
+                $exception->getMessage(),
+                SDK::SERVER_UNREACHABLE,
+                $exception
+            );
+        }
+    }
+
+    /**
+     * Remove redundant Query
+     *
+     * @codeCoverageIgnore
+     */
+    private function cleanQuery()
+    {
+        if (isset($this->options['query']) && $this->options['query'] === []) {
+            unset($this->options['query']);
+        }
+    }
+
+    /**
+     * Remove redundant Headers
+     *
+     * @codeCoverageIgnore
+     */
+    private function cleanFormParams()
+    {
+        if (isset($this->options['form_params']) && $this->options['form_params'] === []) {
+            unset($this->options['form_params']);
+        }
+    }
+}

+ 335 - 0
vendor/alibabacloud/client/src/Request/RoaRequest.php

xqd
@@ -0,0 +1,335 @@
+<?php
+
+namespace AlibabaCloud\Client\Request;
+
+use Exception;
+use Stringy\Stringy;
+use RuntimeException;
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Encode;
+use AlibabaCloud\Client\Accept;
+use AlibabaCloud\Client\Support\Path;
+use AlibabaCloud\Client\Support\Sign;
+use AlibabaCloud\Client\Filter\Filter;
+use AlibabaCloud\Client\Support\Arrays;
+use AlibabaCloud\Client\Filter\ApiFilter;
+use AlibabaCloud\Client\Credentials\StsCredential;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+use AlibabaCloud\Client\Credentials\AccessKeyCredential;
+use AlibabaCloud\Client\Credentials\BearerTokenCredential;
+use AlibabaCloud\Client\Request\Traits\DeprecatedRoaTrait;
+
+/**
+ * RESTful ROA Request.
+ *
+ * @package   AlibabaCloud\Client\Request
+ * @method setParameter()
+ */
+class RoaRequest extends Request
+{
+    use DeprecatedRoaTrait;
+
+    /**
+     * @var string
+     */
+    public $pathPattern = '/';
+
+    /**
+     * @var array
+     */
+    public $pathParameters = [];
+
+    /**
+     * @var string
+     */
+    private $dateTimeFormat = "D, d M Y H:i:s \G\M\T";
+
+    /**
+     * Resolve request parameter.
+     *
+     * @throws ClientException
+     * @throws Exception
+     */
+    public function resolveParameter()
+    {
+        $this->resolveQuery();
+        $this->resolveHeaders();
+        $this->resolveBody();
+        $this->resolveUri();
+        $this->resolveSignature();
+    }
+
+    private function resolveQuery()
+    {
+        if (!isset($this->options['query']['Version'])) {
+            $this->options['query']['Version'] = $this->version;
+        }
+    }
+
+    private function resolveBody()
+    {
+        // If the body has already been specified, it will not be resolved.
+        if (isset($this->options['body'])) {
+            return;
+        }
+
+        if (!isset($this->options['form_params'])) {
+            return;
+        }
+
+        // Merge data, compatible with parameters set from constructor.
+        $params = Arrays::merge(
+            [
+                $this->data,
+                $this->options['form_params']
+            ]
+        );
+
+        $this->encodeBody($params);
+
+        unset($this->options['form_params']);
+    }
+
+    /**
+     * Determine the body format based on the Content-Type and calculate the MD5 value.
+     *
+     * @param array $params
+     */
+    private function encodeBody(array $params)
+    {
+        $stringy = Stringy::create($this->options['headers']['Content-Type']);
+
+        if ($stringy->contains('application/json', false)) {
+            $this->options['body']                   = json_encode($params);
+            $this->options['headers']['Content-MD5'] = base64_encode(md5($this->options['body'], true));
+
+            return;
+        }
+
+        $this->options['body']                    = Encode::create($params)->ksort()->toString();
+        $this->options['headers']['Content-MD5']  = base64_encode(md5($this->options['body'], true));
+        $this->options['headers']['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
+    }
+
+    /**
+     * @throws ClientException
+     * @throws ServerException
+     * @throws Exception
+     */
+    private function resolveHeaders()
+    {
+        $this->options['headers']['x-acs-version']   = $this->version;
+        $this->options['headers']['x-acs-region-id'] = $this->realRegionId();
+        $this->options['headers']['Date']            = gmdate($this->dateTimeFormat);
+
+        $signature                                           = $this->httpClient()->getSignature();
+        $this->options['headers']['x-acs-signature-method']  = $signature->getMethod();
+        $this->options['headers']['x-acs-signature-nonce']   = Sign::uuid($this->product . $this->action);
+        $this->options['headers']['x-acs-signature-version'] = $signature->getVersion();
+        if ($signature->getType()) {
+            $this->options['headers']['x-acs-signature-type'] = $signature->getType();
+        }
+
+        $this->resolveAccept();
+        $this->resolveContentType();
+        $this->resolveSecurityToken();
+        $this->resolveBearerToken();
+    }
+
+    /**
+     * @throws ClientException
+     * @throws Exception
+     */
+    private function resolveSignature()
+    {
+        $this->options['headers']['Authorization'] = $this->signature();
+    }
+
+    /**
+     * If accept is not specified, it is determined by format.
+     */
+    private function resolveAccept()
+    {
+        if (!isset($this->options['headers']['Accept'])) {
+            $this->options['headers']['Accept'] = Accept::create($this->format)->toString();
+        }
+    }
+
+    /**
+     * If the Content-Type is not specified, it is determined according to accept.
+     */
+    private function resolveContentType()
+    {
+        if (!isset($this->options['headers']['Content-Type'])) {
+            $this->options['headers']['Content-Type'] = "{$this->options['headers']['Accept']}; charset=utf-8";
+        }
+    }
+
+    /**
+     * @throws ClientException
+     * @throws ServerException
+     */
+    private function resolveSecurityToken()
+    {
+        if (!$this->credential() instanceof StsCredential) {
+            return;
+        }
+
+        if (!$this->credential()->getSecurityToken()) {
+            return;
+        }
+
+        $this->options['headers']['x-acs-security-token'] = $this->credential()->getSecurityToken();
+    }
+
+    /**
+     * @throws ClientException
+     * @throws ServerException
+     */
+    private function resolveBearerToken()
+    {
+        if ($this->credential() instanceof BearerTokenCredential) {
+            $this->options['headers']['x-acs-bearer-token'] = $this->credential()->getBearerToken();
+        }
+    }
+
+    /**
+     * Sign the request message.
+     *
+     * @return string
+     * @throws ClientException
+     * @throws ServerException
+     */
+    private function signature()
+    {
+        /**
+         * @var AccessKeyCredential $credential
+         */
+        $credential    = $this->credential();
+        $access_key_id = $credential->getAccessKeyId();
+        $signature     = $this->httpClient()
+                              ->getSignature()
+                              ->sign(
+                                  $this->stringToSign(),
+                                  $credential->getAccessKeySecret()
+                              );
+
+        return "acs $access_key_id:$signature";
+    }
+
+    /**
+     * @return void
+     */
+    private function resolveUri()
+    {
+        $path = Path::assign($this->pathPattern, $this->pathParameters);
+
+        $this->uri = $this->uri->withPath($path)
+                               ->withQuery(
+                                   $this->queryString()
+                               );
+    }
+
+    /**
+     * @return string
+     */
+    public function stringToSign()
+    {
+        $request = new \GuzzleHttp\Psr7\Request(
+            $this->method,
+            $this->uri,
+            $this->options['headers']
+        );
+
+        return Sign::roaString($request);
+    }
+
+    /**
+     * @return bool|string
+     */
+    private function queryString()
+    {
+        $query = isset($this->options['query'])
+            ? $this->options['query']
+            : [];
+
+        return Encode::create($query)->ksort()->toString();
+    }
+
+    /**
+     * Set path parameter by name.
+     *
+     * @param string $name
+     * @param string $value
+     *
+     * @return RoaRequest
+     * @throws ClientException
+     */
+    public function pathParameter($name, $value)
+    {
+        Filter::name($name);
+
+        if ($value === '') {
+            throw new ClientException(
+                'Value cannot be empty',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        $this->pathParameters[$name] = $value;
+
+        return $this;
+    }
+
+    /**
+     * Set path pattern.
+     *
+     * @param string $pattern
+     *
+     * @return self
+     * @throws ClientException
+     */
+    public function pathPattern($pattern)
+    {
+        ApiFilter::pattern($pattern);
+
+        $this->pathPattern = $pattern;
+
+        return $this;
+    }
+
+    /**
+     * Magic method for set or get request parameters.
+     *
+     * @param string $name
+     * @param mixed  $arguments
+     *
+     * @return $this
+     */
+    public function __call($name, $arguments)
+    {
+        if (strncmp($name, 'get', 3) === 0) {
+            $parameter_name = \mb_strcut($name, 3);
+
+            return $this->__get($parameter_name);
+        }
+
+        if (strncmp($name, 'with', 4) === 0) {
+            $parameter_name = \mb_strcut($name, 4);
+            $this->__set($parameter_name, $arguments[0]);
+            $this->pathParameters[$parameter_name] = $arguments[0];
+
+            return $this;
+        }
+
+        if (strncmp($name, 'set', 3) === 0) {
+            $parameter_name = \mb_strcut($name, 3);
+            $with_method    = "with$parameter_name";
+
+            throw new RuntimeException("Please use $with_method instead of $name");
+        }
+
+        throw new RuntimeException('Call to undefined method ' . __CLASS__ . '::' . $name . '()');
+    }
+}

+ 203 - 0
vendor/alibabacloud/client/src/Request/RpcRequest.php

xqd
@@ -0,0 +1,203 @@
+<?php
+
+namespace AlibabaCloud\Client\Request;
+
+use Exception;
+use RuntimeException;
+use AlibabaCloud\Client\Support\Sign;
+use AlibabaCloud\Client\Support\Arrays;
+use AlibabaCloud\Client\Credentials\StsCredential;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+use AlibabaCloud\Client\Credentials\BearerTokenCredential;
+
+/**
+ * RESTful RPC Request.
+ *
+ * @package   AlibabaCloud\Client\Request
+ */
+class RpcRequest extends Request
+{
+
+    /**
+     * @var string
+     */
+    private $dateTimeFormat = 'Y-m-d\TH:i:s\Z';
+
+    /**
+     * Resolve request parameter.
+     *
+     * @throws ClientException
+     */
+    public function resolveParameter()
+    {
+        $this->resolveBoolInParameters();
+        $this->resolveCommonParameters();
+        $this->repositionParameters();
+    }
+
+    /**
+     * Convert a Boolean value to a string
+     */
+    private function resolveBoolInParameters()
+    {
+        if (isset($this->options['query'])) {
+            $this->options['query'] = array_map(
+                static function ($value) {
+                    return self::boolToString($value);
+                },
+                $this->options['query']
+            );
+        }
+    }
+
+    /**
+     * Convert a Boolean value to a string.
+     *
+     * @param bool|string $value
+     *
+     * @return string
+     */
+    public static function boolToString($value)
+    {
+        if (is_bool($value)) {
+            return $value ? 'true' : 'false';
+        }
+
+        return $value;
+    }
+
+    /**
+     * Resolve Common Parameters.
+     *
+     * @throws ClientException
+     * @throws Exception
+     */
+    private function resolveCommonParameters()
+    {
+        $signature                                  = $this->httpClient()->getSignature();
+        $this->options['query']['RegionId']         = $this->realRegionId();
+        $this->options['query']['Format']           = $this->format;
+        $this->options['query']['SignatureMethod']  = $signature->getMethod();
+        $this->options['query']['SignatureVersion'] = $signature->getVersion();
+        $this->options['query']['SignatureNonce']   = Sign::uuid($this->product . $this->action);
+        $this->options['query']['Timestamp']        = gmdate($this->dateTimeFormat);
+        $this->options['query']['Action']           = $this->action;
+        if ($this->credential()->getAccessKeyId()) {
+            $this->options['query']['AccessKeyId'] = $this->credential()->getAccessKeyId();
+        }
+        if ($signature->getType()) {
+            $this->options['query']['SignatureType'] = $signature->getType();
+        }
+        if (!isset($this->options['query']['Version'])) {
+            $this->options['query']['Version'] = $this->version;
+        }
+        $this->resolveSecurityToken();
+        $this->resolveBearerToken();
+        $this->options['query']['Signature'] = $this->signature();
+    }
+
+    /**
+     * @throws ClientException
+     * @throws ServerException
+     */
+    private function resolveSecurityToken()
+    {
+        if (!$this->credential() instanceof StsCredential) {
+            return;
+        }
+
+        if (!$this->credential()->getSecurityToken()) {
+            return;
+        }
+
+        $this->options['query']['SecurityToken'] = $this->credential()->getSecurityToken();
+    }
+
+    /**
+     * @throws ClientException
+     * @throws ServerException
+     */
+    private function resolveBearerToken()
+    {
+        if ($this->credential() instanceof BearerTokenCredential) {
+            $this->options['query']['BearerToken'] = $this->credential()->getBearerToken();
+        }
+    }
+
+    /**
+     * Sign the parameters.
+     *
+     * @return mixed
+     * @throws ClientException
+     * @throws ServerException
+     */
+    private function signature()
+    {
+        return $this->httpClient()
+                    ->getSignature()
+                    ->sign(
+                        $this->stringToSign(),
+                        $this->credential()->getAccessKeySecret() . '&'
+                    );
+    }
+
+    /**
+     * @return string
+     */
+    public function stringToSign()
+    {
+        $query       = isset($this->options['query']) ? $this->options['query'] : [];
+        $form_params = isset($this->options['form_params']) ? $this->options['form_params'] : [];
+        $parameters  = Arrays::merge([$query, $form_params]);
+
+        return Sign::rpcString($this->method, $parameters);
+    }
+
+    /**
+     * Adjust parameter position
+     */
+    private function repositionParameters()
+    {
+        if ($this->method === 'POST' || $this->method === 'PUT') {
+            foreach ($this->options['query'] as $api_key => $api_value) {
+                $this->options['form_params'][$api_key] = $api_value;
+            }
+            unset($this->options['query']);
+        }
+    }
+
+    /**
+     * Magic method for set or get request parameters.
+     *
+     * @param string $name
+     * @param mixed  $arguments
+     *
+     * @return $this
+     */
+    public function __call($name, $arguments)
+    {
+        if (strncmp($name, 'get', 3) === 0) {
+            $parameter_name = \mb_strcut($name, 3);
+
+            return $this->__get($parameter_name);
+        }
+
+        if (strncmp($name, 'with', 4) === 0) {
+            $parameter_name = \mb_strcut($name, 4);
+            $this->__set($parameter_name, $arguments[0]);
+            $this->options['query'][$parameter_name] = $arguments[0];
+
+            return $this;
+        }
+
+        if (strncmp($name, 'set', 3) === 0) {
+            $parameter_name = \mb_strcut($name, 3);
+            $with_method    = "with$parameter_name";
+
+            throw new RuntimeException("Please use $with_method instead of $name");
+        }
+
+        throw new RuntimeException('Call to undefined method ' . __CLASS__ . '::' . $name . '()');
+    }
+}

+ 259 - 0
vendor/alibabacloud/client/src/Request/Traits/AcsTrait.php

xqd
@@ -0,0 +1,259 @@
+<?php
+
+namespace AlibabaCloud\Client\Request\Traits;
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+use AlibabaCloud\Client\Filter\ApiFilter;
+use AlibabaCloud\Client\Regions\LocationService;
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\SDK;
+use GuzzleHttp\Psr7\Uri;
+
+/**
+ * Trait AcsTrait
+ *
+ * @package   AlibabaCloud\Client\Request\Traits
+ * @property Uri $uri
+ * @mixin     Request
+ */
+trait AcsTrait
+{
+    /**
+     * @var string
+     */
+    public $version;
+
+    /**
+     * @var string
+     */
+    public $product;
+
+    /**
+     * @var string
+     */
+    public $action;
+
+    /**
+     * @var string
+     */
+    public $serviceCode = '';
+
+    /**
+     * @var string
+     */
+    public $endpointType = 'openAPI';
+
+    /**
+     * @var string|null
+     */
+    public $network = 'public';
+
+    /**
+     * @var array|null
+     */
+    public $endpointMap;
+
+    /**
+     * @var string|null
+     */
+    public $endpointRegional;
+
+    /**
+     * @var string
+     */
+    public $endpointSuffix = '';
+
+    /**
+     * @param string $action
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function action($action)
+    {
+        $this->action = ApiFilter::action($action);
+
+        return $this;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     *
+     * @param string $endpointSuffix
+     *
+     * @return AcsTrait
+     * @throws ClientException
+     */
+    public function endpointSuffix($endpointSuffix)
+    {
+        $this->endpointSuffix = ApiFilter::endpointSuffix($endpointSuffix);
+
+        return $this;
+    }
+
+    /**
+     * @param string $network
+     */
+    public function network($network)
+    {
+        $this->network = ApiFilter::network($network);
+
+        return $this;
+    }
+
+    /**
+     * @param string $version
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function version($version)
+    {
+        $this->version = ApiFilter::version($version);
+
+        return $this;
+    }
+
+    /**
+     * @param string $product
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function product($product)
+    {
+        $this->product = ApiFilter::product($product);
+
+        return $this;
+    }
+
+    /**
+     * @param string $endpointType
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function endpointType($endpointType)
+    {
+        $this->endpointType = ApiFilter::endpointType($endpointType);
+
+        return $this;
+    }
+
+    /**
+     * @param string $serviceCode
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function serviceCode($serviceCode)
+    {
+        $this->serviceCode = ApiFilter::serviceCode($serviceCode);
+
+        return $this;
+    }
+
+    /**
+     * Resolve Host.
+     *
+     * @throws ClientException
+     * @throws ServerException
+     */
+    public function resolveHost()
+    {
+        // Return if specified
+        if ($this->uri->getHost() !== 'localhost') {
+            return;
+        }
+
+        $region_id = $this->realRegionId();
+        $host      = '';
+
+        $this->resolveHostWays($host, $region_id);
+
+        if (!$host) {
+            throw new ClientException(
+                "No host found for {$this->product} in the {$region_id}, you can specify host by host() method. " .
+                'Like $request->host(\'xxx.xxx.aliyuncs.com\')',
+                SDK::HOST_NOT_FOUND
+            );
+        }
+
+        $this->uri = $this->uri->withHost($host);
+    }
+
+    /**
+     * @param string $host
+     * @param string $region_id
+     *
+     * @throws ClientException
+     * @throws ServerException
+     */
+    private function resolveHostWays(&$host, $region_id)
+    {
+        $host = AlibabaCloud::resolveHostByStatic($this->product, $region_id);
+
+        // 1. Find host by map.
+        if (!$host && $this->network === 'public' && isset($this->endpointMap[$region_id])) {
+            $host = $this->endpointMap[$region_id];
+        }
+
+        if (!$host) {
+            $this->hostResolver($host, $region_id);
+        }
+    }
+
+    /**
+     * @codeCoverageIgnore
+     *
+     * @param string $host
+     * @param string $region_id
+     *
+     * @throws ClientException
+     * @throws ServerException
+     */
+    private function hostResolver(&$host, $region_id)
+    {
+        // 2. Find host by rules.
+        if ($this->endpointRegional !== null) {
+            $host = AlibabaCloud::resolveHostByRule($this);
+        }
+
+        // 3. Find in the local array file.
+        if (!$host) {
+            $host = AlibabaCloud::resolveHost($this->product, $region_id);
+        }
+
+        // 4. Find in the Location service.
+        if (!$host && $this->serviceCode) {
+            $host = LocationService::resolveHost($this);
+        }
+    }
+
+    /**
+     * @return string
+     * @throws ClientException
+     */
+    public function realRegionId()
+    {
+        if ($this->regionId !== null) {
+            return $this->regionId;
+        }
+
+        if ($this->httpClient()->regionId !== null) {
+            return $this->httpClient()->regionId;
+        }
+
+        if (AlibabaCloud::getDefaultRegionId() !== null) {
+            return AlibabaCloud::getDefaultRegionId();
+        }
+
+        if ($this->product && AlibabaCloud::isGlobalProduct($this->product)) {
+            return 'global';
+        }
+
+        throw new ClientException("Missing required 'RegionId' for Request", SDK::INVALID_REGION_ID);
+    }
+}

+ 98 - 0
vendor/alibabacloud/client/src/Request/Traits/ClientTrait.php

xqd
@@ -0,0 +1,98 @@
+<?php
+
+namespace AlibabaCloud\Client\Request\Traits;
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Clients\Client;
+use AlibabaCloud\Client\Support\Arrays;
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\Credentials\StsCredential;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Exception\ServerException;
+use AlibabaCloud\Client\Credentials\AccessKeyCredential;
+use AlibabaCloud\Client\Credentials\Requests\AssumeRole;
+use AlibabaCloud\Client\Credentials\CredentialsInterface;
+use AlibabaCloud\Client\Credentials\BearerTokenCredential;
+use AlibabaCloud\Client\Credentials\Providers\CredentialsProvider;
+use AlibabaCloud\Client\Credentials\Requests\GenerateSessionAccessKey;
+
+/**
+ * Trait ClientTrait
+ *
+ * @package   AlibabaCloud\Client\Request\Traits
+ *
+ * @mixin     Request
+ */
+trait ClientTrait
+{
+    /**
+     * @var array
+     */
+    private static $config = [];
+
+    /**
+     * @param array $config
+     */
+    public static function config(array $config)
+    {
+        self::$config = $config;
+    }
+
+    /**
+     * Return credentials directly if it is an AssumeRole or GenerateSessionAccessKey.
+     *
+     * @return AccessKeyCredential|BearerTokenCredential|CredentialsInterface|StsCredential
+     * @throws ClientException
+     * @throws ServerException
+     */
+    public function credential()
+    {
+        if ($this instanceof AssumeRole || $this instanceof GenerateSessionAccessKey) {
+            return $this->httpClient()->getCredential();
+        }
+
+        $timeout = isset($this->options['timeout'])
+            ? $this->options['timeout']
+            : Request::TIMEOUT;
+
+        $connectTimeout = isset($this->options['connect_timeout'])
+            ? $this->options['connect_timeout']
+            : Request::CONNECT_TIMEOUT;
+
+        return $this->httpClient()->getSessionCredential($timeout, $connectTimeout);
+    }
+
+    /**
+     * Get the client based on the request's settings.
+     *
+     * @return Client
+     * @throws ClientException
+     */
+    public function httpClient()
+    {
+        if (!AlibabaCloud::all()) {
+            if (CredentialsProvider::hasCustomChain()) {
+                CredentialsProvider::customProvider($this->client);
+            } else {
+                CredentialsProvider::defaultProvider($this->client);
+            }
+        }
+
+        return AlibabaCloud::get($this->client);
+    }
+
+    /**
+     * Merged with the client's options, the same name will be overwritten.
+     *
+     * @throws ClientException
+     */
+    public function mergeOptionsIntoClient()
+    {
+        $this->options = Arrays::merge(
+            [
+                $this->httpClient()->options,
+                $this->options
+            ]
+        );
+    }
+}

+ 55 - 0
vendor/alibabacloud/client/src/Request/Traits/DeprecatedRoaTrait.php

xqd
@@ -0,0 +1,55 @@
+<?php
+
+namespace AlibabaCloud\Client\Request\Traits;
+
+/**
+ * @package    AlibabaCloud\Client\Request\Traits
+ * @codeCoverageIgnore
+ */
+trait DeprecatedRoaTrait
+{
+    /**
+     * @param $name
+     * @param $value
+     *
+     * @return $this
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function putPathParameter($name, $value)
+    {
+        return $this->pathParameter($name, $value);
+    }
+
+    /**
+     * @param $pathPattern
+     *
+     * @return $this
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function setUriPattern($pathPattern)
+    {
+        return $this->pathPattern($pathPattern);
+    }
+
+    /**
+     * @return string
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getUriPattern()
+    {
+        return $this->pathPattern;
+    }
+
+    /**
+     * @return array
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getPathParameters()
+    {
+        return $this->pathParameters;
+    }
+}

+ 246 - 0
vendor/alibabacloud/client/src/Request/Traits/DeprecatedTrait.php

xqd
@@ -0,0 +1,246 @@
+<?php
+
+namespace AlibabaCloud\Client\Request\Traits;
+
+use AlibabaCloud\Client\Exception\ClientException;
+use RuntimeException;
+use AlibabaCloud\Client\Request\Request;
+
+/**
+ * @package    AlibabaCloud\Client\Request\Traits
+ *
+ * @mixin Request
+ */
+trait DeprecatedTrait
+{
+
+    /**
+     * @param $content
+     *
+     * @return $this
+     * @throws ClientException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function setContent($content)
+    {
+        return $this->body($content);
+    }
+
+    /**
+     * @param $method
+     *
+     * @return $this
+     * @throws ClientException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function setMethod($method)
+    {
+        return $this->method($method);
+    }
+
+    /**
+     * @param $scheme
+     *
+     * @return $this
+     * @throws ClientException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function setProtocol($scheme)
+    {
+        return $this->scheme($scheme);
+    }
+
+    /**
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getProtocolType()
+    {
+        return $this->uri->getScheme();
+    }
+
+    /**
+     * @param $scheme
+     *
+     * @return $this
+     * @throws ClientException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function setProtocolType($scheme)
+    {
+        return $this->scheme($scheme);
+    }
+
+    /**
+     * @param $actionName
+     *
+     * @return $this
+     * @throws ClientException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function setActionName($actionName)
+    {
+        return $this->action($actionName);
+    }
+
+    /**
+     * @param $format
+     *
+     * @return $this
+     * @throws ClientException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function setAcceptFormat($format)
+    {
+        return $this->format($format);
+    }
+
+    /**
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getProtocol()
+    {
+        return $this->uri->getScheme();
+    }
+
+    /**
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getContent()
+    {
+        return isset($this->options['body'])
+            ? $this->options['body']
+            : null;
+    }
+
+    /**
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getMethod()
+    {
+        return $this->method;
+    }
+
+    /**
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getHeaders()
+    {
+        return isset($this->options['headers'])
+            ? $this->options['headers']
+            : [];
+    }
+
+    /**
+     * @param $headerKey
+     * @param $headerValue
+     *
+     * @return $this
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function addHeader($headerKey, $headerValue)
+    {
+        $this->options['headers'][$headerKey] = $headerValue;
+
+        return $this;
+    }
+
+    /**
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getQueryParameters()
+    {
+        return isset($this->options['query'])
+            ? $this->options['query']
+            : [];
+    }
+
+    /**
+     * @param $name
+     * @param $value
+     *
+     * @return $this
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function setQueryParameters($name, $value)
+    {
+        $this->options['query'][$name] = $value;
+
+        return $this;
+    }
+
+    /**
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getDomainParameter()
+    {
+        return isset($this->options['form_params'])
+            ? $this->options['form_params']
+            : [];
+    }
+
+    /**
+     * @param $name
+     * @param $value
+     *
+     * @return $this
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function putDomainParameters($name, $value)
+    {
+        $this->options['form_params'][$name] = $value;
+
+        return $this;
+    }
+
+    /**
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getActionName()
+    {
+        return $this->action;
+    }
+
+    /**
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getAcceptFormat()
+    {
+        return $this->format;
+    }
+
+    /**
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getLocationEndpointType()
+    {
+        return $this->endpointType;
+    }
+
+    /**
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public function getLocationServiceCode()
+    {
+        return $this->serviceCode;
+    }
+}

+ 149 - 0
vendor/alibabacloud/client/src/Request/Traits/RetryTrait.php

xqd
@@ -0,0 +1,149 @@
+<?php
+
+namespace AlibabaCloud\Client\Request\Traits;
+
+use Exception;
+use Stringy\Stringy;
+use AlibabaCloud\Client\Result\Result;
+use AlibabaCloud\Client\Filter\ClientFilter;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Trait RetryTrait
+ *
+ * @package AlibabaCloud\Client\Request\Traits
+ */
+trait RetryTrait
+{
+    /**
+     * Server Retry Times
+     *
+     * @var int
+     */
+    private $serverRetry = 0;
+
+    /**
+     * Server Retry Strings
+     *
+     * @var string[]
+     */
+    private $serverRetryStrings = [];
+
+    /**
+     * Server Retry Codes
+     *
+     * @var int[]
+     */
+    private $serverRetryStatusCodes = [];
+
+    /**
+     * Client Retry Times
+     *
+     * @var int
+     */
+    private $clientRetry = 0;
+
+    /**
+     * Client Retry Strings
+     *
+     * @var string[]
+     */
+    private $clientRetryStrings = [];
+
+    /**
+     * Client Retry Codes
+     *
+     * @var int[]
+     */
+    private $clientRetryStatusCodes = [];
+
+    /**
+     * @param int   $times
+     * @param array $strings
+     * @param array $statusCodes
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function retryByServer($times, array $strings, array $statusCodes = [])
+    {
+        $this->serverRetry            = ClientFilter::retry($times);
+        $this->serverRetryStrings     = $strings;
+        $this->serverRetryStatusCodes = $statusCodes;
+
+        return $this;
+    }
+
+    /**
+     * @param int   $times
+     * @param array $strings
+     * @param array $codes
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function retryByClient($times, array $strings, array $codes = [])
+    {
+        $this->clientRetry            = ClientFilter::retry($times);
+        $this->clientRetryStrings     = $strings;
+        $this->clientRetryStatusCodes = $codes;
+
+        return $this;
+    }
+
+    /**
+     * @param Result $result
+     *
+     * @return bool
+     */
+    private function shouldServerRetry(Result $result)
+    {
+        if ($this->serverRetry <= 0) {
+            return false;
+        }
+
+        if (in_array($result->getStatusCode(), $this->serverRetryStatusCodes)) {
+            $this->serverRetry--;
+
+            return true;
+        }
+
+        foreach ($this->serverRetryStrings as $message) {
+            if (Stringy::create($result->getBody())->contains($message)) {
+                $this->serverRetry--;
+
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * @param Exception $exception
+     *
+     * @return bool
+     */
+    private function shouldClientRetry(Exception $exception)
+    {
+        if ($this->clientRetry <= 0) {
+            return false;
+        }
+
+        if (in_array($exception->getCode(), $this->clientRetryStatusCodes, true)) {
+            $this->clientRetry--;
+
+            return true;
+        }
+
+        foreach ($this->clientRetryStrings as $message) {
+            if (Stringy::create($exception->getMessage())->contains($message)) {
+                $this->clientRetry--;
+
+                return true;
+            }
+        }
+
+        return false;
+    }
+}

+ 142 - 0
vendor/alibabacloud/client/src/Request/UserAgent.php

xqd
@@ -0,0 +1,142 @@
+<?php
+
+namespace AlibabaCloud\Client\Request;
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Filter\Filter;
+use AlibabaCloud\Client\Support\Arrays;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class UserAgent
+ *
+ * @package AlibabaCloud\Client\Request
+ */
+class UserAgent
+{
+
+    /**
+     * @var array
+     */
+    private static $userAgent = [];
+
+    /**
+     * @var array
+     */
+    private static $guard = [
+        'client',
+        'php',
+    ];
+
+    /**
+     * @param array $append
+     *
+     * @return string
+     */
+    public static function toString(array $append = [])
+    {
+        self::defaultFields();
+
+        $os        = \PHP_OS;
+        $osVersion = php_uname('r');
+        $osMode    = php_uname('m');
+        $userAgent = "AlibabaCloud ($os $osVersion; $osMode) ";
+
+        $newUserAgent = [];
+
+        $append = self::clean($append);
+
+        $append = Arrays::merge(
+            [
+                self::$userAgent,
+                $append,
+            ]
+        );
+
+        foreach ($append as $key => $value) {
+            if ($value === null) {
+                $newUserAgent[] = $key;
+                continue;
+            }
+            $newUserAgent[] = "$key/$value";
+        }
+
+        return $userAgent . \implode(' ', $newUserAgent);
+    }
+
+    /**
+     * UserAgent constructor.
+     */
+    private static function defaultFields()
+    {
+        if (self::$userAgent === []) {
+            self::$userAgent = [
+                'Client' => AlibabaCloud::VERSION,
+                'PHP'    => \PHP_VERSION,
+            ];
+        }
+    }
+
+    /**
+     * @param array $append
+     *
+     * @return array
+     */
+    public static function clean(array $append)
+    {
+        foreach ($append as $key => $value) {
+            if (self::isGuarded($key)) {
+                unset($append[$key]);
+                continue;
+            }
+        }
+
+        return $append;
+    }
+
+    /**
+     * @param $name
+     *
+     * @return bool
+     */
+    public static function isGuarded($name)
+    {
+        return in_array(strtolower($name), self::$guard, true);
+    }
+
+    /**
+     * set User Agent of Alibaba Cloud.
+     *
+     * @param string $name
+     * @param string $value
+     *
+     * @throws ClientException
+     */
+    public static function append($name, $value)
+    {
+        Filter::name($name);
+        Filter::value($value);
+
+        self::defaultFields();
+
+        if (!self::isGuarded($name)) {
+            self::$userAgent[$name] = $value;
+        }
+    }
+
+    /**
+     * @param array $userAgent
+     */
+    public static function with(array $userAgent)
+    {
+        self::$userAgent = self::clean($userAgent);
+    }
+
+    /**
+     * Clear all of the User Agent.
+     */
+    public static function clear()
+    {
+        self::$userAgent = [];
+    }
+}

+ 50 - 0
vendor/alibabacloud/client/src/Resolver/ActionResolverTrait.php

xqd
@@ -0,0 +1,50 @@
+<?php
+
+namespace AlibabaCloud\Client\Resolver;
+
+use ReflectionClass;
+use ReflectionException;
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * @codeCoverageIgnore
+ * @mixin Rpc
+ * @mixin Roa
+ * @mixin Request
+ * @package AlibabaCloud\Client\Resolver
+ */
+trait ActionResolverTrait
+{
+
+    /**
+     * Resolve Action name from class name
+     */
+    private function resolveActionName()
+    {
+        if (!$this->action) {
+            $array        = explode('\\', get_class($this));
+            $this->action = array_pop($array);
+        }
+    }
+
+    /**
+     * Append SDK version into User-Agent
+     *
+     * @throws ClientException
+     * @throws ReflectionException
+     */
+    private function appendSdkUA()
+    {
+        if (!(new ReflectionClass(AlibabaCloud::class))->hasMethod('appendUserAgent')) {
+            return;
+        }
+
+        if (!class_exists('AlibabaCloud\Release')) {
+            return;
+        }
+
+        AlibabaCloud::appendUserAgent('SDK', \AlibabaCloud\Release::VERSION);
+    }
+}

+ 113 - 0
vendor/alibabacloud/client/src/Resolver/ApiResolver.php

xqd
@@ -0,0 +1,113 @@
+<?php
+
+namespace AlibabaCloud\Client\Resolver;
+
+use ReflectionObject;
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class ApiResolver
+ *
+ * @codeCoverageIgnore
+ * @package AlibabaCloud\Client\Resolver
+ */
+abstract class ApiResolver
+{
+
+    /**
+     * @param $name
+     * @param $arguments
+     *
+     * @return mixed
+     */
+    public static function __callStatic($name, $arguments)
+    {
+        return (new static())->__call($name, $arguments);
+    }
+
+    /**
+     * @param $api
+     * @param $arguments
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public function __call($api, $arguments)
+    {
+        $product_name = $this->getProductName();
+        $class        = $this->getNamespace() . '\\' . \ucfirst($api);
+
+        if (\class_exists($class)) {
+            if (isset($arguments[0])) {
+                return $this->warpEndpoint(new $class($arguments[0]));
+            }
+
+            return $this->warpEndpoint(new $class());
+        }
+
+        throw new ClientException(
+            "{$product_name} contains no $api",
+            'SDK.ApiNotFound'
+        );
+    }
+
+    /**
+     * @param Request $request
+     *
+     * @return Request
+     */
+    public function warpEndpoint(Request $request)
+    {
+        $reflect        = new ReflectionObject($request);
+        $product_dir    = dirname(dirname($reflect->getFileName()));
+        $endpoints_json = "$product_dir/endpoints.json";
+        if (file_exists($endpoints_json)) {
+            $endpoints = json_decode(file_get_contents($endpoints_json), true);
+            if (isset($endpoints['endpoint_map'])) {
+                $request->endpointMap = $endpoints['endpoint_map'];
+            }
+            if (isset($endpoints['endpoint_regional'])) {
+                $request->endpointRegional = $endpoints['endpoint_regional'];
+            }
+        }
+
+        return $request;
+    }
+
+    /**
+     * @return mixed
+     * @throws ClientException
+     */
+    private function getProductName()
+    {
+        $array = \explode('\\', \get_class($this));
+        if (isset($array[3])) {
+            return str_replace('ApiResolver', '', $array[3]);
+        }
+        throw new ClientException(
+            'Service name not found.',
+            'SDK.ServiceNotFound'
+        );
+    }
+
+    /**
+     * @return string
+     * @throws ClientException
+     */
+    private function getNamespace()
+    {
+        $array = \explode('\\', \get_class($this));
+
+        if (!isset($array[3])) {
+            throw new ClientException(
+                'Get namespace error.',
+                'SDK.ParseError'
+            );
+        }
+
+        unset($array[3]);
+
+        return \implode('\\', $array);
+    }
+}

+ 67 - 0
vendor/alibabacloud/client/src/Resolver/CallTrait.php

xqd
@@ -0,0 +1,67 @@
+<?php
+
+namespace AlibabaCloud\Client\Resolver;
+
+use RuntimeException;
+use ArgumentCountError;
+
+/**
+ * Trait CallTrait
+ *
+ * @codeCoverageIgnore
+ * @package AlibabaCloud\Client\Resolver
+ */
+trait CallTrait
+{
+    /**
+     * Magic method for set or get request parameters.
+     *
+     * @param string $name
+     * @param mixed  $arguments
+     *
+     * @return $this
+     */
+    public function __call($name, $arguments)
+    {
+        if (strncmp($name, 'get', 3) === 0) {
+            $parameter = \mb_strcut($name, 3);
+
+            return $this->__get($parameter);
+        }
+
+        if (strncmp($name, 'with', 4) === 0) {
+            $parameter = \mb_strcut($name, 4);
+
+            $value                                 = $this->getCallArguments($name, $arguments);
+            $this->data[$parameter]                = $value;
+            $this->parameterPosition()[$parameter] = $value;
+
+            return $this;
+        }
+
+        if (strncmp($name, 'set', 3) === 0) {
+            $parameter   = \mb_strcut($name, 3);
+            $with_method = "with$parameter";
+
+            return $this->$with_method($this->getCallArguments($name, $arguments));
+        }
+
+        throw new RuntimeException('Call to undefined method ' . __CLASS__ . '::' . $name . '()');
+    }
+
+    /**
+     * @param string $name
+     * @param array  $arguments
+     * @param int    $index
+     *
+     * @return mixed
+     */
+    private function getCallArguments($name, array $arguments, $index = 0)
+    {
+        if (!isset($arguments[$index])) {
+            throw new ArgumentCountError("Missing arguments to method $name");
+        }
+
+        return $arguments[$index];
+    }
+}

+ 43 - 0
vendor/alibabacloud/client/src/Resolver/Roa.php

xqd
@@ -0,0 +1,43 @@
+<?php
+
+namespace AlibabaCloud\Client\Resolver;
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Request\RoaRequest;
+use ReflectionClass;
+use ReflectionException;
+
+/**
+ * Class Roa
+ *
+ * @codeCoverageIgnore
+ * @package AlibabaCloud\Client\Resolver
+ */
+abstract class Roa extends RoaRequest
+{
+    use ActionResolverTrait;
+    use CallTrait;
+
+    /**
+     * @param array $options
+     *
+     * @throws ReflectionException
+     * @throws ClientException
+     */
+    public function __construct(array $options = [])
+    {
+        parent::__construct($options);
+
+        $this->resolveActionName();
+        $this->appendSdkUA();
+    }
+
+    /**
+     * @return mixed
+     */
+    private function &parameterPosition()
+    {
+        return $this->pathParameters;
+    }
+}

+ 41 - 0
vendor/alibabacloud/client/src/Resolver/Rpc.php

xqd
@@ -0,0 +1,41 @@
+<?php
+
+namespace AlibabaCloud\Client\Resolver;
+
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Request\RpcRequest;
+use ReflectionException;
+
+/**
+ * Class Rpc
+ *
+ * @codeCoverageIgnore
+ * @package AlibabaCloud\Client\Resolver
+ */
+abstract class Rpc extends RpcRequest
+{
+    use ActionResolverTrait;
+    use CallTrait;
+
+    /**
+     * @param array $options
+     *
+     * @throws ReflectionException
+     * @throws ClientException
+     */
+    public function __construct(array $options = [])
+    {
+        parent::__construct($options);
+
+        $this->resolveActionName();
+        $this->appendSdkUA();
+    }
+
+    /**
+     * @return mixed
+     */
+    private function &parameterPosition()
+    {
+        return $this->options['query'];
+    }
+}

+ 74 - 0
vendor/alibabacloud/client/src/Resolver/VersionResolver.php

xqd
@@ -0,0 +1,74 @@
+<?php
+
+namespace AlibabaCloud\Client\Resolver;
+
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class VersionResolver
+ *
+ * @codeCoverageIgnore
+ * @package AlibabaCloud\Client\Resolver
+ */
+abstract class VersionResolver
+{
+
+    /**
+     * @param string $name
+     * @param array  $arguments
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public static function __callStatic($name, $arguments)
+    {
+        return (new static())->__call($name, $arguments);
+    }
+
+    /**
+     * @param string $version
+     * @param array  $arguments
+     *
+     * @return mixed
+     * @throws ClientException
+     */
+    public function __call($version, $arguments)
+    {
+        $version = \ucfirst($version);
+        $product = $this->getProductName();
+
+        $position = strpos($product, 'Version');
+        if ($position !== false && $position !== 0) {
+            $product = \str_replace('Version', '', $product);
+        }
+
+        $class = "AlibabaCloud\\{$product}\\$version\\{$product}ApiResolver";
+
+        if (\class_exists($class)) {
+            return new $class();
+        }
+
+        throw new ClientException(
+            "$product Versions contains no {$version}",
+            'SDK.VersionNotFound'
+        );
+    }
+
+    /**
+     * @return mixed
+     * @throws ClientException
+     */
+    private function getProductName()
+    {
+        $array = \explode('\\', \get_class($this));
+
+        if (is_array($array) && isset($array[1])) {
+            return $array[1];
+        }
+
+        throw new ClientException(
+            'Service name not found.',
+            'SDK.ServiceNotFound'
+        );
+    }
+}

+ 151 - 0
vendor/alibabacloud/client/src/Result/Result.php

xqd
@@ -0,0 +1,151 @@
+<?php
+
+namespace AlibabaCloud\Client\Result;
+
+use Countable;
+use Exception;
+use ArrayAccess;
+use IteratorAggregate;
+use InvalidArgumentException;
+use GuzzleHttp\Psr7\Response;
+use Psr\Http\Message\ResponseInterface;
+use AlibabaCloud\Client\Request\Request;
+use AlibabaCloud\Client\Traits\HasDataTrait;
+
+/**
+ * Result from Alibaba Cloud
+ *
+ * @property string|null RequestId
+ *
+ * @package   AlibabaCloud\Client\Result
+ */
+class Result extends Response implements ArrayAccess, IteratorAggregate, Countable
+{
+    use HasDataTrait;
+
+    /**
+     * Instance of the request.
+     *
+     * @var Request
+     */
+    protected $request;
+
+    /**
+     * Result constructor.
+     *
+     * @param ResponseInterface $response
+     * @param Request           $request
+     */
+    public function __construct(ResponseInterface $response, Request $request = null)
+    {
+        parent::__construct(
+            $response->getStatusCode(),
+            $response->getHeaders(),
+            $response->getBody(),
+            $response->getProtocolVersion(),
+            $response->getReasonPhrase()
+        );
+
+        $this->request = $request;
+
+        $this->resolveData();
+    }
+
+    private function resolveData()
+    {
+        $content = $this->getBody()->getContents();
+
+        switch ($this->getRequestFormat()) {
+            case 'JSON':
+                $result_data = $this->jsonToArray($content);
+                break;
+            case 'XML':
+                $result_data = $this->xmlToArray($content);
+                break;
+            case 'RAW':
+                $result_data = $this->jsonToArray($content);
+                break;
+            default:
+                $result_data = $this->jsonToArray($content);
+        }
+
+        if (!$result_data) {
+            $result_data = [];
+        }
+
+        $this->dot($result_data);
+    }
+
+    /**
+     * @return string
+     */
+    private function getRequestFormat()
+    {
+        return ($this->request instanceof Request)
+            ? \strtoupper($this->request->format)
+            : 'JSON';
+    }
+
+    /**
+     * @param string $response
+     *
+     * @return array
+     */
+    private function jsonToArray($response)
+    {
+        try {
+            return \GuzzleHttp\json_decode($response, true);
+        } catch (InvalidArgumentException $exception) {
+            return [];
+        }
+    }
+
+    /**
+     * @param string $string
+     *
+     * @return array
+     */
+    private function xmlToArray($string)
+    {
+        try {
+            return json_decode(json_encode(simplexml_load_string($string)), true);
+        } catch (Exception $exception) {
+            return [];
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return (string)$this->getBody();
+    }
+
+    /**
+     * @return Request
+     */
+    public function getRequest()
+    {
+        return $this->request;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     * @return Response
+     * @deprecated
+     */
+    public function getResponse()
+    {
+        return $this;
+    }
+
+    /**
+     * @return bool
+     */
+    public function isSuccess()
+    {
+        return 200 <= $this->getStatusCode()
+               && 300 > $this->getStatusCode();
+    }
+}

+ 57 - 0
vendor/alibabacloud/client/src/SDK.php

xqd
@@ -0,0 +1,57 @@
+<?php
+
+namespace AlibabaCloud\Client;
+
+/**
+ * Class SDK
+ *
+ * @package AlibabaCloud\Client
+ */
+class SDK
+{
+    /**
+     * Invalid credential
+     */
+    const INVALID_CREDENTIAL = 'SDK.InvalidCredential';
+
+    /**
+     * Client Not Found
+     */
+    const CLIENT_NOT_FOUND = 'SDK.ClientNotFound';
+
+    /**
+     * Host Not Found
+     */
+    const HOST_NOT_FOUND = 'SDK.HostNotFound';
+
+    /**
+     * Server Unreachable
+     */
+    const SERVER_UNREACHABLE = 'SDK.ServerUnreachable';
+
+    /**
+     * Invalid RegionId
+     */
+    const INVALID_REGION_ID = 'SDK.InvalidRegionId';
+
+    /**
+     * Invalid Argument
+     */
+    const INVALID_ARGUMENT = 'SDK.InvalidArgument';
+
+    /**
+     * Service Not Found
+     */
+
+    const SERVICE_NOT_FOUND = 'SDK.ServiceNotFound';
+
+    /**
+     * Service Unknown Error
+     */
+    const SERVICE_UNKNOWN_ERROR = 'SDK.UnknownError';
+
+    /**
+     * Response Empty
+     */
+    const RESPONSE_EMPTY = 'The response is empty';
+}

+ 47 - 0
vendor/alibabacloud/client/src/Signature/BearerTokenSignature.php

xqd
@@ -0,0 +1,47 @@
+<?php
+
+namespace AlibabaCloud\Client\Signature;
+
+/**
+ * Class BearerTokenSignature
+ *
+ * @package   AlibabaCloud\Signature
+ */
+class BearerTokenSignature extends Signature implements SignatureInterface
+{
+
+    /**
+     * @return string
+     */
+    public function getMethod()
+    {
+        return '';
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return 'BEARERTOKEN';
+    }
+
+    /**
+     * @return string
+     */
+    public function getVersion()
+    {
+        return '1.0';
+    }
+
+    /**
+     * @param string $string
+     * @param string $accessKeySecret
+     *
+     * @return string
+     */
+    public function sign($string, $accessKeySecret)
+    {
+        return '';
+    }
+}

+ 47 - 0
vendor/alibabacloud/client/src/Signature/ShaHmac1Signature.php

xqd
@@ -0,0 +1,47 @@
+<?php
+
+namespace AlibabaCloud\Client\Signature;
+
+/**
+ * Class ShaHmac1Signature
+ *
+ * @package   AlibabaCloud\Signature
+ */
+class ShaHmac1Signature extends Signature implements SignatureInterface
+{
+
+    /**
+     * @return string
+     */
+    public function getMethod()
+    {
+        return 'HMAC-SHA1';
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return '';
+    }
+
+    /**
+     * @return string
+     */
+    public function getVersion()
+    {
+        return '1.0';
+    }
+
+    /**
+     * @param string $string
+     * @param string $accessKeySecret
+     *
+     * @return string
+     */
+    public function sign($string, $accessKeySecret)
+    {
+        return base64_encode(hash_hmac('sha1', $string, $accessKeySecret, true));
+    }
+}

+ 47 - 0
vendor/alibabacloud/client/src/Signature/ShaHmac256Signature.php

xqd
@@ -0,0 +1,47 @@
+<?php
+
+namespace AlibabaCloud\Client\Signature;
+
+/**
+ * Class ShaHmac256Signature
+ *
+ * @package   AlibabaCloud\Signature
+ */
+class ShaHmac256Signature extends Signature implements SignatureInterface
+{
+
+    /**
+     * @return string
+     */
+    public function getMethod()
+    {
+        return 'HMAC-SHA256';
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return '';
+    }
+
+    /**
+     * @return string
+     */
+    public function getVersion()
+    {
+        return '1.0';
+    }
+
+    /**
+     * @param string $string
+     * @param string $accessKeySecret
+     *
+     * @return string
+     */
+    public function sign($string, $accessKeySecret)
+    {
+        return base64_encode(hash_hmac('sha256', $string, $accessKeySecret, true));
+    }
+}

+ 67 - 0
vendor/alibabacloud/client/src/Signature/ShaHmac256WithRsaSignature.php

xqd
@@ -0,0 +1,67 @@
+<?php
+
+namespace AlibabaCloud\Client\Signature;
+
+use Exception;
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Class ShaHmac256WithRsaSignature
+ *
+ * @package   AlibabaCloud\Signature
+ */
+class ShaHmac256WithRsaSignature extends Signature implements SignatureInterface
+{
+
+    /**
+     * @return string
+     */
+    public function getMethod()
+    {
+        return 'SHA256withRSA';
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return 'PRIVATEKEY';
+    }
+
+    /**
+     * @return string
+     */
+    public function getVersion()
+    {
+        return '1.0';
+    }
+
+    /**
+     * @param string $string
+     * @param string $privateKey
+     *
+     * @return string
+     * @throws ClientException
+     */
+    public function sign($string, $privateKey)
+    {
+        $binarySignature = '';
+        try {
+            openssl_sign(
+                $string,
+                $binarySignature,
+                $privateKey,
+                \OPENSSL_ALGO_SHA256
+            );
+        } catch (Exception $exception) {
+            throw  new ClientException(
+                $exception->getMessage(),
+                SDK::INVALID_CREDENTIAL
+            );
+        }
+
+        return base64_encode($binarySignature);
+    }
+}

+ 49 - 0
vendor/alibabacloud/client/src/Signature/Signature.php

xqd
@@ -0,0 +1,49 @@
+<?php
+
+namespace AlibabaCloud\Client\Signature;
+
+use GuzzleHttp\Psr7\Request;
+use AlibabaCloud\Client\Support\Sign;
+
+/**
+ * Class Signature
+ *
+ * @package AlibabaCloud\Client\Signature
+ */
+abstract class Signature
+{
+
+    /**
+     * @codeCoverageIgnore
+     *
+     * @param string  $accessKeyId
+     * @param string  $accessKeySecret
+     * @param Request $request
+     *
+     * @return string
+     */
+    public function roa($accessKeyId, $accessKeySecret, Request $request)
+    {
+        $string = Sign::roaString($request);
+
+        $signature = $this->sign($string, $accessKeySecret);
+
+        return "acs $accessKeyId:$signature";
+    }
+
+    /**
+     * @codeCoverageIgnore
+     *
+     * @param string $accessKeySecret
+     * @param string $method
+     * @param array  $parameters
+     *
+     * @return string
+     */
+    public function rpc($accessKeySecret, $method, array $parameters)
+    {
+        $string = Sign::rpcString($method, $parameters);
+
+        return $this->sign($string, $accessKeySecret . '&');
+    }
+}

+ 35 - 0
vendor/alibabacloud/client/src/Signature/SignatureInterface.php

xqd
@@ -0,0 +1,35 @@
+<?php
+
+namespace AlibabaCloud\Client\Signature;
+
+/**
+ * Interface used to provide interchangeable strategies for requests
+ *
+ * @package   AlibabaCloud\Signature
+ */
+interface SignatureInterface
+{
+
+    /**
+     * @return string
+     */
+    public function getMethod();
+
+    /**
+     * @return string
+     */
+    public function getVersion();
+
+    /**
+     * @param string $string
+     * @param string $accessKeySecret
+     *
+     * @return string
+     */
+    public function sign($string, $accessKeySecret);
+
+    /**
+     * @return string
+     */
+    public function getType();
+}

+ 41 - 0
vendor/alibabacloud/client/src/Support/Arrays.php

xqd
@@ -0,0 +1,41 @@
+<?php
+
+namespace AlibabaCloud\Client\Support;
+
+/**
+ * Class Arrays
+ *
+ * @package AlibabaCloud\Client\Support
+ */
+class Arrays
+{
+
+    /**
+     * @param array $arrays
+     *
+     * @return array
+     */
+    public static function merge(array $arrays)
+    {
+        $result = [];
+        foreach ($arrays as $array) {
+            foreach ($array as $key => $value) {
+                if (is_int($key)) {
+                    $result[] = $value;
+                    continue;
+                }
+
+                if (isset($result[$key]) && is_array($result[$key])) {
+                    $result[$key] = self::merge(
+                        [$result[$key], $value]
+                    );
+                    continue;
+                }
+
+                $result[$key] = $value;
+            }
+        }
+
+        return $result;
+    }
+}

+ 28 - 0
vendor/alibabacloud/client/src/Support/Path.php

xqd
@@ -0,0 +1,28 @@
+<?php
+
+namespace AlibabaCloud\Client\Support;
+
+/**
+ * Class Path
+ *
+ * @package AlibabaCloud\Client\Support
+ */
+class Path
+{
+    /**
+     * Assign path parameters to the url.
+     *
+     * @param string $pattern
+     * @param array  $parameters
+     *
+     * @return string
+     */
+    public static function assign($pattern, array $parameters)
+    {
+        foreach ($parameters as $key => $value) {
+            $pattern = str_replace("[$key]", $value, $pattern);
+        }
+
+        return $pattern;
+    }
+}

+ 143 - 0
vendor/alibabacloud/client/src/Support/Sign.php

xqd
@@ -0,0 +1,143 @@
+<?php
+
+namespace AlibabaCloud\Client\Support;
+
+use GuzzleHttp\Psr7\Request;
+use Psr\Http\Message\UriInterface;
+
+/**
+ * Class Sign
+ *
+ * @package AlibabaCloud\Client\Support
+ */
+class Sign
+{
+    /**
+     * @var string
+     */
+    private static $headerSeparator = "\n";
+
+    /**
+     * Construct standard Header for Alibaba Cloud.
+     *
+     * @param array $headers
+     *
+     * @return string
+     */
+    private static function acsHeaderString(array $headers)
+    {
+        $array = [];
+        foreach ($headers as $headerKey => $headerValue) {
+            $key = strtolower($headerKey);
+            if (strncmp($key, 'x-acs-', 6) === 0) {
+                $array[$key] = $headerValue;
+            }
+        }
+        ksort($array);
+        $string = '';
+        foreach ($array as $sortMapKey => $sortMapValue) {
+            $string .= $sortMapKey . ':' . $sortMapValue[0] . self::$headerSeparator;
+        }
+
+        return $string;
+    }
+
+    /**
+     * @param UriInterface $uri
+     *
+     * @return string
+     */
+    private static function resourceString(UriInterface $uri)
+    {
+        return $uri->getPath() . '?' . rawurldecode($uri->getQuery());
+    }
+
+    /**
+     * @param string $method
+     * @param array  $headers
+     *
+     * @return string
+     */
+    private static function headerString($method, array $headers)
+    {
+        $string = $method . self::$headerSeparator;
+        if (isset($headers['Accept'][0])) {
+            $string .= $headers['Accept'][0];
+        }
+        $string .= self::$headerSeparator;
+
+        if (isset($headers['Content-MD5'][0])) {
+            $string .= $headers['Content-MD5'][0];
+        }
+        $string .= self::$headerSeparator;
+
+        if (isset($headers['Content-Type'][0])) {
+            $string .= $headers['Content-Type'][0];
+        }
+        $string .= self::$headerSeparator;
+
+        if (isset($headers['Date'][0])) {
+            $string .= $headers['Date'][0];
+        }
+        $string .= self::$headerSeparator;
+
+        $string .= self::acsHeaderString($headers);
+
+        return $string;
+    }
+
+    /**
+     * @param string $string
+     *
+     * @return null|string|string[]
+     */
+    private static function percentEncode($string)
+    {
+        $result = urlencode($string);
+        $result = str_replace(['+', '*'], ['%20', '%2A'], $result);
+        $result = preg_replace('/%7E/', '~', $result);
+
+        return $result;
+    }
+
+    /**
+     * @param string $method
+     * @param array  $parameters
+     *
+     * @return string
+     */
+    public static function rpcString($method, array $parameters)
+    {
+        ksort($parameters);
+        $canonicalized = '';
+        foreach ($parameters as $key => $value) {
+            if ($value === null || $value === '') {
+                continue;
+            }
+            $canonicalized .= '&' . self::percentEncode($key) . '=' . self::percentEncode($value);
+        }
+
+        return $method . '&%2F&' . self::percentEncode(substr($canonicalized, 1));
+    }
+
+    /**
+     * @param Request $request
+     *
+     * @return string
+     */
+    public static function roaString(Request $request)
+    {
+        return self::headerString($request->getMethod(), $request->getHeaders()) .
+               self::resourceString($request->getUri());
+    }
+
+    /**
+     * @param string $salt
+     *
+     * @return string
+     */
+    public static function uuid($salt)
+    {
+        return md5($salt . uniqid(md5(microtime(true)), true)) . microtime();
+    }
+}

+ 57 - 0
vendor/alibabacloud/client/src/Traits/ArrayAccessTrait.php

xqd
@@ -0,0 +1,57 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+/**
+ * Trait ArrayAccessTrait
+ *
+ * @package   AlibabaCloud\Client\Traits
+ */
+trait ArrayAccessTrait
+{
+    /**
+     * This method returns a reference to the variable to allow for indirect
+     * array modification (e.g., $foo['bar']['baz'] = 'qux').
+     *
+     * @param string $offset
+     *
+     * @return mixed|null
+     */
+    public function & offsetGet($offset)
+    {
+        if (isset($this->data[$offset])) {
+            return $this->data[$offset];
+        }
+
+        $value = null;
+
+        return $value;
+    }
+
+    /**
+     * @param string       $offset
+     * @param string|mixed $value
+     */
+    public function offsetSet($offset, $value)
+    {
+        $this->data[$offset] = $value;
+    }
+
+    /**
+     * @param string $offset
+     *
+     * @return bool
+     */
+    public function offsetExists($offset)
+    {
+        return isset($this->data[$offset]);
+    }
+
+    /**
+     * @param string $offset
+     */
+    public function offsetUnset($offset)
+    {
+        unset($this->data[$offset]);
+    }
+}

+ 273 - 0
vendor/alibabacloud/client/src/Traits/ClientTrait.php

xqd
@@ -0,0 +1,273 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+use AlibabaCloud\Client\SDK;
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Clients\Client;
+use AlibabaCloud\Client\Clients\StsClient;
+use AlibabaCloud\Client\Filter\ClientFilter;
+use AlibabaCloud\Client\Clients\AccessKeyClient;
+use AlibabaCloud\Client\Clients\EcsRamRoleClient;
+use AlibabaCloud\Client\Clients\RamRoleArnClient;
+use AlibabaCloud\Client\Clients\RsaKeyPairClient;
+use AlibabaCloud\Client\Clients\BearerTokenClient;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Signature\SignatureInterface;
+use AlibabaCloud\Client\Credentials\Ini\IniCredential;
+use AlibabaCloud\Client\Credentials\CredentialsInterface;
+use AlibabaCloud\Client\Credentials\Providers\CredentialsProvider;
+
+/**
+ * Trait of the manage clients.
+ *
+ * @package   AlibabaCloud\Client\Traits
+ *
+ * @mixin     AlibabaCloud
+ */
+trait ClientTrait
+{
+    /**
+     * @var array Containers of Clients
+     */
+    protected static $clients = [];
+
+    /**
+     * @param string $clientName
+     * @param Client $client
+     *
+     * @return Client
+     * @throws ClientException
+     */
+    public static function set($clientName, Client $client)
+    {
+        ClientFilter::clientName($clientName);
+
+        return self::$clients[\strtolower($clientName)] = $client;
+    }
+
+    /**
+     * Get all clients.
+     *
+     * @return array
+     */
+    public static function all()
+    {
+        return self::$clients;
+    }
+
+    /**
+     * Delete the client by specifying name.
+     *
+     * @param string $clientName
+     *
+     * @throws ClientException
+     */
+    public static function del($clientName)
+    {
+        ClientFilter::clientName($clientName);
+
+        unset(self::$clients[\strtolower($clientName)]);
+    }
+
+    /**
+     * Delete all clients.
+     *
+     * @return void
+     */
+    public static function flush()
+    {
+        self::$clients         = [];
+        self::$defaultRegionId = null;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     * @throws ClientException
+     * @deprecated
+     */
+    public static function getGlobalClient()
+    {
+        return self::getDefaultClient();
+    }
+
+    /**
+     * Get the default client.
+     *
+     * @return Client
+     * @throws ClientException
+     */
+    public static function getDefaultClient()
+    {
+        return self::get(CredentialsProvider::getDefaultName());
+    }
+
+    /**
+     * Get the Client instance by name.
+     *
+     * @param string $clientName
+     *
+     * @return Client
+     * @throws ClientException
+     */
+    public static function get($clientName)
+    {
+        ClientFilter::clientName($clientName);
+
+        if (self::has($clientName)) {
+            return self::$clients[\strtolower($clientName)];
+        }
+
+        throw new ClientException(
+            "Client '$clientName' not found",
+            SDK::CLIENT_NOT_FOUND
+        );
+    }
+
+    /**
+     * Determine whether there is a client.
+     *
+     * @param string $clientName
+     *
+     * @return bool
+     * @throws ClientException
+     */
+    public static function has($clientName)
+    {
+        ClientFilter::clientName($clientName);
+
+        return isset(self::$clients[\strtolower($clientName)]);
+    }
+
+    /**
+     * A list of additional files to load.
+     *
+     * @return array
+     * @throws ClientException when a file has a syntax error or does not exist or is not readable
+     */
+    public static function load()
+    {
+        if (\func_get_args() === []) {
+            return (new IniCredential())->load();
+        }
+        $list = [];
+        foreach (\func_get_args() as $filename) {
+            $list[$filename] = (new IniCredential($filename))->load();
+        }
+
+        return $list;
+    }
+
+    /**
+     * Custom Client.
+     *
+     * @param CredentialsInterface $credentials
+     * @param SignatureInterface   $signature
+     *
+     * @return Client
+     */
+    public static function client(CredentialsInterface $credentials, SignatureInterface $signature)
+    {
+        return new Client($credentials, $signature);
+    }
+
+    /**
+     * Use the AccessKey to complete the authentication.
+     *
+     * @param string $accessKeyId
+     * @param string $accessKeySecret
+     *
+     * @return AccessKeyClient
+     * @throws ClientException
+     */
+    public static function accessKeyClient($accessKeyId, $accessKeySecret)
+    {
+        if (strpos($accessKeyId, ' ') !== false) {
+            throw new ClientException(
+                'AccessKey ID format is invalid',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        if (strpos($accessKeySecret, ' ') !== false) {
+            throw new ClientException(
+                'AccessKey Secret format is invalid',
+                SDK::INVALID_ARGUMENT
+            );
+        }
+
+        return new AccessKeyClient($accessKeyId, $accessKeySecret);
+    }
+
+    /**
+     * Use the AssumeRole of the RAM account to complete  the authentication.
+     *
+     * @param string       $accessKeyId
+     * @param string       $accessKeySecret
+     * @param string       $roleArn
+     * @param string       $roleSessionName
+     * @param string|array $policy
+     *
+     * @return RamRoleArnClient
+     * @throws ClientException
+     */
+    public static function ramRoleArnClient($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName, $policy = '')
+    {
+        return new RamRoleArnClient($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName, $policy);
+    }
+
+    /**
+     * Use the RAM role of an ECS instance to complete the authentication.
+     *
+     * @param string $roleName
+     *
+     * @return EcsRamRoleClient
+     * @throws ClientException
+     */
+    public static function ecsRamRoleClient($roleName)
+    {
+        return new EcsRamRoleClient($roleName);
+    }
+
+    /**
+     * Use the Bearer Token to complete the authentication.
+     *
+     * @param string $bearerToken
+     *
+     * @return BearerTokenClient
+     * @throws ClientException
+     */
+    public static function bearerTokenClient($bearerToken)
+    {
+        return new BearerTokenClient($bearerToken);
+    }
+
+    /**
+     * Use the STS Token to complete the authentication.
+     *
+     * @param string $accessKeyId     Access key ID
+     * @param string $accessKeySecret Access Key Secret
+     * @param string $securityToken   Security Token
+     *
+     * @return StsClient
+     * @throws ClientException
+     */
+    public static function stsClient($accessKeyId, $accessKeySecret, $securityToken = '')
+    {
+        return new StsClient($accessKeyId, $accessKeySecret, $securityToken);
+    }
+
+    /**
+     * Use the RSA key pair to complete the authentication (supported only on Japanese site)
+     *
+     * @param string $publicKeyId
+     * @param string $privateKeyFile
+     *
+     * @return RsaKeyPairClient
+     * @throws ClientException
+     */
+    public static function rsaKeyPairClient($publicKeyId, $privateKeyFile)
+    {
+        return new RsaKeyPairClient($publicKeyId, $privateKeyFile);
+    }
+}

+ 66 - 0
vendor/alibabacloud/client/src/Traits/DefaultRegionTrait.php

xqd
@@ -0,0 +1,66 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Filter\ClientFilter;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Trait DefaultRegionTrait
+ *
+ * @package   AlibabaCloud\Client\Traits
+ *
+ * @mixin     AlibabaCloud
+ */
+trait DefaultRegionTrait
+{
+    /**
+     * @var string|null Default RegionId
+     */
+    protected static $defaultRegionId;
+
+    /**
+     * @param $regionId
+     *
+     * @throws ClientException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public static function setGlobalRegionId($regionId)
+    {
+        self::setDefaultRegionId($regionId);
+    }
+
+    /**
+     * @return string|null
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public static function getGlobalRegionId()
+    {
+        return self::getDefaultRegionId();
+    }
+
+    /**
+     * Get the default RegionId.
+     *
+     * @return string|null
+     */
+    public static function getDefaultRegionId()
+    {
+        return self::$defaultRegionId;
+    }
+
+    /**
+     * Set the default RegionId.
+     *
+     * @param string $regionId
+     *
+     * @throws ClientException
+     */
+    public static function setDefaultRegionId($regionId)
+    {
+        self::$defaultRegionId = ClientFilter::regionId($regionId);
+    }
+}

+ 134 - 0
vendor/alibabacloud/client/src/Traits/EndpointTrait.php

xqd
@@ -0,0 +1,134 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Config\Config;
+use AlibabaCloud\Client\Exception\ClientException;
+use AlibabaCloud\Client\Filter\ApiFilter;
+use AlibabaCloud\Client\Filter\ClientFilter;
+use AlibabaCloud\Client\Filter\HttpFilter;
+use AlibabaCloud\Client\Regions\LocationService;
+use AlibabaCloud\Client\Request\Request;
+use InvalidArgumentException;
+
+/**
+ * Help developers set up and get host.
+ *
+ * @package   AlibabaCloud\Client\Traits
+ *
+ * @mixin     AlibabaCloud
+ */
+trait EndpointTrait
+{
+    /**
+     * @var array Host cache.
+     */
+    private static $hosts = [];
+
+    /**
+     * Resolve host based on product name and region.
+     *
+     * @param string $product
+     * @param string $regionId
+     *
+     * @return string
+     * @throws ClientException
+     */
+    public static function resolveHost($product, $regionId = LocationService::GLOBAL_REGION)
+    {
+        ApiFilter::product($product);
+        ClientFilter::regionId($regionId);
+
+        if (isset(self::$hosts[$product][$regionId])) {
+            return self::$hosts[$product][$regionId];
+        }
+
+        $domain = Config::get("endpoints.{$product}.{$regionId}");
+        if (!$domain) {
+            $regionId = LocationService::GLOBAL_REGION;
+            $domain   = Config::get("endpoints.{$product}.{$regionId}", '');
+        }
+
+        return $domain;
+    }
+
+    /**
+     * @param $productCode
+     *
+     * @return bool
+     */
+    public static function isGlobalProduct($productCode)
+    {
+        $global = LocationService::GLOBAL_REGION;
+        if (self::resolveHostByStatic($productCode, $global)) {
+            return true;
+        }
+        $productCode = strtolower($productCode);
+        return (bool)Config::get("endpoints.{$productCode}.{$global}");
+    }
+
+    /**
+     * @param string $product
+     * @param string $regionId
+     *
+     * @return string
+     */
+    public static function resolveHostByStatic($product, $regionId)
+    {
+        if (isset(self::$hosts[$product][$regionId])) {
+            return self::$hosts[$product][$regionId];
+        }
+
+        return '';
+    }
+
+    /**
+     * Add host based on product name and region.
+     *
+     * @param string $product
+     * @param string $host
+     * @param string $regionId
+     *
+     * @return void
+     * @throws ClientException
+     */
+    public static function addHost($product, $host, $regionId = LocationService::GLOBAL_REGION)
+    {
+        ApiFilter::product($product);
+
+        HttpFilter::host($host);
+
+        ClientFilter::regionId($regionId);
+
+        self::$hosts[$product][$regionId] = $host;
+
+        LocationService::addHost($product, $host, $regionId);
+    }
+
+    /**
+     * @param Request $request
+     *
+     * @return string
+     * @throws ClientException
+     */
+    public static function resolveHostByRule(Request $request)
+    {
+        $network = $request->network ?: 'public';
+        $suffix  = $request->endpointSuffix;
+        if ($network === 'public') {
+            $network = '';
+        }
+
+        if ($request->endpointRegional === 'regional') {
+            $regionId = $request->realRegionId();
+            return "{$request->product}{$suffix}{$network}.{$regionId}.aliyuncs.com";
+        }
+
+        if ($request->endpointRegional === 'central') {
+            return "{$request->product}{$suffix}{$network}.aliyuncs.com";
+        }
+
+        throw new InvalidArgumentException('endpointRegional is invalid.');
+    }
+}

+ 317 - 0
vendor/alibabacloud/client/src/Traits/HasDataTrait.php

xqd
@@ -0,0 +1,317 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+use Adbar\Dot;
+use ArrayIterator;
+use JmesPath\Env as JmesPath;
+use AlibabaCloud\Client\Result\Result;
+
+/**
+ * Trait HasDataTrait
+ *
+ * @package   AlibabaCloud\Client\Traits
+ * @mixin     Result
+ */
+trait HasDataTrait
+{
+
+    /**
+     * Instance of the Dot.
+     *
+     * @var Dot
+     */
+    protected $dot;
+
+    /**
+     * @param string $expression
+     *
+     * @return mixed|null
+     */
+    public function search($expression)
+    {
+        return JmesPath::search($expression, $this->dot->all());
+    }
+
+    /**
+     * Delete the contents of a given key or keys
+     *
+     * @param array|int|string|null $keys
+     */
+    public function clear($keys = null)
+    {
+        $this->dot->clear($keys);
+    }
+
+    /**
+     * Flatten an array with the given character as a key delimiter
+     *
+     * @param string     $delimiter
+     * @param array|null $items
+     * @param string     $prepend
+     *
+     * @return array
+     */
+    public function flatten($delimiter = '.', $items = null, $prepend = '')
+    {
+        return $this->dot->flatten($delimiter, $items, $prepend);
+    }
+
+    /**
+     * Return the value of a given key
+     *
+     * @param int|string|null $key
+     * @param mixed           $default
+     *
+     * @return mixed
+     */
+    public function get($key = null, $default = null)
+    {
+        return $this->dot->get($key, $default);
+    }
+
+    /**
+     * Set a given key / value pair or pairs
+     *
+     * @param array|int|string $keys
+     * @param mixed            $value
+     */
+    public function set($keys, $value = null)
+    {
+        $this->dot->set($keys, $value);
+    }
+
+    /**
+     * Check if a given key or keys are empty
+     *
+     * @param array|int|string|null $keys
+     *
+     * @return bool
+     */
+    public function isEmpty($keys = null)
+    {
+        return $this->dot->isEmpty($keys);
+    }
+
+    /**
+     * Replace all items with a given array as a reference
+     *
+     * @param array $items
+     */
+    public function setReference(array &$items)
+    {
+        $this->dot->setReference($items);
+    }
+
+    /**
+     * Return the value of a given key or all the values as JSON
+     *
+     * @param mixed $key
+     * @param int   $options
+     *
+     * @return string
+     */
+    public function toJson($key = null, $options = 0)
+    {
+        return $this->dot->toJson($key, $options);
+    }
+
+    /**
+     * @return array
+     */
+    public function toArray()
+    {
+        return $this->dot->all();
+    }
+
+    /**
+     * Check if a given key exists
+     *
+     * @param int|string $key
+     *
+     * @return bool
+     */
+    public function offsetExists($key)
+    {
+        return $this->dot->has($key);
+    }
+
+    /**
+     * Return the value of a given key
+     *
+     * @param int|string $key
+     *
+     * @return mixed
+     */
+    public function offsetGet($key)
+    {
+        return $this->dot->offsetGet($key);
+    }
+
+    /**
+     * Set a given value to the given key
+     *
+     * @param int|string|null $key
+     * @param mixed           $value
+     */
+    public function offsetSet($key, $value)
+    {
+        $this->dot->offsetSet($key, $value);
+    }
+
+    /**
+     * Delete the given key
+     *
+     * @param int|string $key
+     */
+    public function offsetUnset($key)
+    {
+        $this->delete($key);
+    }
+
+    /**
+     * Delete the given key or keys
+     *
+     * @param array|int|string $keys
+     */
+    public function delete($keys)
+    {
+        $this->dot->delete($keys);
+    }
+
+    /*
+     * --------------------------------------------------------------
+     * ArrayAccess interface
+     * --------------------------------------------------------------
+     */
+
+    /**
+     * Return the number of items in a given key
+     *
+     * @param int|string|null $key
+     *
+     * @return int
+     */
+    public function count($key = null)
+    {
+        return $this->dot->count($key);
+    }
+
+    /**
+     * Get an iterator for the stored items
+     *
+     * @return ArrayIterator
+     */
+    public function getIterator()
+    {
+        return $this->dot->getIterator();
+    }
+
+    /**
+     * Return items for JSON serialization
+     *
+     * @return array
+     */
+    public function jsonSerialize()
+    {
+        return $this->dot->jsonSerialize();
+    }
+
+    /**
+     * @param string $name
+     *
+     * @return mixed|null
+     */
+    public function __get($name)
+    {
+        if (!isset($this->all()[$name])) {
+            return null;
+        }
+
+        return \json_decode(\json_encode($this->all()))->$name;
+    }
+
+    /*
+     * --------------------------------------------------------------
+     * Countable interface
+     * --------------------------------------------------------------
+     */
+
+    /**
+     * Return all the stored items
+     *
+     * @return array
+     */
+    public function all()
+    {
+        return $this->dot->all();
+    }
+
+    /**
+     * @param string $name
+     * @param mixed  $value
+     */
+    public function __set($name, $value)
+    {
+        $this->add($name, $value);
+    }
+
+    /**
+     * Set a given key / value pair or pairs
+     * if the key doesn't exist already
+     *
+     * @param array|int|string $keys
+     * @param mixed            $value
+     */
+    public function add($keys, $value = null)
+    {
+        $this->dot->add($keys, $value);
+    }
+
+
+    /*
+     * --------------------------------------------------------------
+     * ObjectAccess
+     * --------------------------------------------------------------
+     */
+
+    /**
+     * @param string $name
+     *
+     * @return bool
+     */
+    public function __isset($name)
+    {
+        return $this->has($name);
+    }
+
+    /**
+     * Check if a given key or keys exists
+     *
+     * @param array|int|string $keys
+     *
+     * @return bool
+     */
+    public function has($keys)
+    {
+        return $this->dot->has($keys);
+    }
+
+    /**
+     * @param $name
+     *
+     * @return void
+     */
+    public function __unset($name)
+    {
+        $this->delete($name);
+    }
+
+    /**
+     * @param array $data
+     */
+    protected function dot(array $data = [])
+    {
+        $this->dot = new Dot($data);
+    }
+}

+ 68 - 0
vendor/alibabacloud/client/src/Traits/HistoryTrait.php

xqd
@@ -0,0 +1,68 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+/**
+ * Trait HistoryTrait
+ *
+ * @package AlibabaCloud\Client\Traits
+ */
+trait HistoryTrait
+{
+    /**
+     * @var array
+     */
+    private static $history = [];
+
+    /**
+     * @var bool
+     */
+    private static $isRememberHistory = false;
+
+    /**
+     * @return array
+     */
+    public static function getHistory()
+    {
+        return self::$history;
+    }
+
+    public static function forgetHistory()
+    {
+        self::$history = [];
+    }
+
+    public static function notRememberHistory()
+    {
+        self::$isRememberHistory = false;
+    }
+
+    public static function rememberHistory()
+    {
+        self::$isRememberHistory = true;
+    }
+
+    /**
+     * @return bool
+     */
+    public static function isRememberHistory()
+    {
+        return self::$isRememberHistory;
+    }
+
+    /**
+     * @return array
+     */
+    public static function &referenceHistory()
+    {
+        return self::$history;
+    }
+
+    /**
+     * @return int
+     */
+    public static function countHistory()
+    {
+        return count(self::$history);
+    }
+}

+ 141 - 0
vendor/alibabacloud/client/src/Traits/HttpTrait.php

xqd
@@ -0,0 +1,141 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+use AlibabaCloud\Client\Support\Arrays;
+use AlibabaCloud\Client\Filter\ClientFilter;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Trait HttpTrait
+ *
+ * @package AlibabaCloud\Client\Traits
+ */
+trait HttpTrait
+{
+
+    /**
+     * @var array
+     */
+    public $options = [];
+
+    /**
+     * @param int|float $seconds
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function timeout($seconds)
+    {
+        $this->options['timeout'] = ClientFilter::timeout($seconds);
+
+        return $this;
+    }
+
+    /**
+     * @param int $milliseconds
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function timeoutMilliseconds($milliseconds)
+    {
+        ClientFilter::milliseconds($milliseconds);
+        $seconds = $milliseconds / 1000;
+
+        return $this->timeout($seconds);
+    }
+
+    /**
+     * @param int|float $seconds
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function connectTimeout($seconds)
+    {
+        $this->options['connect_timeout'] = ClientFilter::connectTimeout($seconds);
+
+        return $this;
+    }
+
+    /**
+     * @param int $milliseconds
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function connectTimeoutMilliseconds($milliseconds)
+    {
+        ClientFilter::milliseconds($milliseconds);
+        $seconds = $milliseconds / 1000;
+
+        return $this->connectTimeout($seconds);
+    }
+
+    /**
+     * @param bool $debug
+     *
+     * @return $this
+     */
+    public function debug($debug)
+    {
+        $this->options['debug'] = $debug;
+
+        return $this;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     *
+     * @param array $cert
+     *
+     * @return $this
+     */
+    public function cert($cert)
+    {
+        $this->options['cert'] = $cert;
+
+        return $this;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     *
+     * @param array|string $proxy
+     *
+     * @return $this
+     */
+    public function proxy($proxy)
+    {
+        $this->options['proxy'] = $proxy;
+
+        return $this;
+    }
+
+    /**
+     * @param mixed $verify
+     *
+     * @return $this
+     */
+    public function verify($verify)
+    {
+        $this->options['verify'] = $verify;
+
+        return $this;
+    }
+
+    /**
+     * @param array $options
+     *
+     * @return $this
+     */
+    public function options(array $options)
+    {
+        if ($options !== []) {
+            $this->options = Arrays::merge([$this->options, $options]);
+        }
+
+        return $this;
+    }
+}

+ 97 - 0
vendor/alibabacloud/client/src/Traits/LogTrait.php

xqd
@@ -0,0 +1,97 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+use DateTime;
+use DateTimeZone;
+use Exception;
+use Psr\Log\LoggerInterface;
+
+/**
+ * Trait LogTrait
+ *
+ * @package AlibabaCloud\Client\Traits
+ */
+trait LogTrait
+{
+    /**
+     * @var LoggerInterface
+     */
+    private static $logger;
+
+    /**
+     * @var float
+     */
+    private static $logStartTime = 0;
+
+    /**
+     * @var string
+     */
+    private static $logFormat;
+
+    /**
+     * @var DateTime
+     */
+    private static $ts;
+
+    /**
+     * @return LoggerInterface
+     */
+    public static function getLogger()
+    {
+        return self::$logger;
+    }
+
+    /**
+     * @param LoggerInterface $logger
+     *
+     * @throws Exception
+     */
+    public static function setLogger(LoggerInterface $logger)
+    {
+        self::$logger       = $logger;
+        self::$logStartTime = microtime(true);
+        $timezone           = new DateTimeZone(date_default_timezone_get() ?: 'UTC');
+        if (PHP_VERSION_ID < 70100) {
+            self::$ts = DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), $timezone);
+        } else {
+            self::$ts = new DateTime(null, $timezone);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public static function getLogFormat()
+    {
+        $template = self::$logFormat
+            ?: '"{method} {uri} HTTP/{version}" {code} {cost} {hostname} {pid}';
+
+        return str_replace(
+            ['{pid}', '{cost}', '{start_time}'],
+            [getmypid(), self::getCost(), self::$ts->format('Y-m-d H:i:s.u')],
+            $template
+        );
+    }
+
+    /**
+     * Apache Common Log Format.
+     *
+     * @param string $formatter
+     *
+     * @link http://httpd.apache.org/docs/2.4/logs.html#common
+     * @see  \GuzzleHttp\MessageFormatter
+     */
+    public static function setLogFormat($formatter)
+    {
+        self::$logFormat = $formatter;
+    }
+
+    /**
+     * @return float|mixed
+     */
+    private static function getCost()
+    {
+        return microtime(true) - self::$logStartTime;
+    }
+}

+ 97 - 0
vendor/alibabacloud/client/src/Traits/MockTrait.php

xqd
@@ -0,0 +1,97 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+use Exception;
+use GuzzleHttp\Psr7\Request;
+use GuzzleHttp\Psr7\Response;
+use GuzzleHttp\Handler\MockHandler;
+use Psr\Http\Message\RequestInterface;
+use Psr\Http\Message\ResponseInterface;
+use GuzzleHttp\Exception\RequestException;
+
+/**
+ * Class MockTrait
+ *
+ * @package AlibabaCloud\Client\Request\Traits
+ * @mixin Request
+ */
+trait MockTrait
+{
+    /**
+     * @var array
+     */
+    private static $mockQueue = [];
+
+    /**
+     * @var MockHandler
+     */
+    private static $mock;
+
+    /**
+     * @param integer             $status
+     * @param array               $headers
+     * @param array|string|object $body
+     */
+    public static function mockResponse($status = 200, array $headers = [], $body = null)
+    {
+        if (is_array($body) || is_object($body)) {
+            $body = json_encode($body);
+        }
+
+        self::$mockQueue[] = new Response($status, $headers, $body);
+        self::createHandlerStack();
+    }
+
+    private static function createHandlerStack()
+    {
+        self::$mock = new MockHandler(self::$mockQueue);
+    }
+
+    /**
+     * @param string                 $message
+     * @param RequestInterface       $request
+     * @param ResponseInterface|null $response
+     * @param Exception|null         $previous
+     * @param array                  $handlerContext
+     */
+    public static function mockRequestException(
+        $message,
+        RequestInterface $request,
+        ResponseInterface $response = null,
+        Exception $previous = null,
+        array $handlerContext = []
+    ) {
+        self::$mockQueue[] = new RequestException(
+            $message,
+            $request,
+            $response,
+            $previous,
+            $handlerContext
+        );
+
+        self::createHandlerStack();
+    }
+
+    public static function cancelMock()
+    {
+        self::$mockQueue = [];
+        self::$mock      = null;
+    }
+
+    /**
+     * @return bool
+     */
+    public static function hasMock()
+    {
+        return (bool)self::$mockQueue;
+    }
+
+    /**
+     * @return MockHandler
+     */
+    public static function getMock()
+    {
+        return self::$mock;
+    }
+}

+ 54 - 0
vendor/alibabacloud/client/src/Traits/ObjectAccessTrait.php

xqd
@@ -0,0 +1,54 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+/**
+ * Trait ObjectAccessTrait
+ *
+ * @package   AlibabaCloud\Client\Traits
+ */
+trait ObjectAccessTrait
+{
+    /**
+     * @param string $name
+     *
+     * @return mixed|null
+     */
+    public function __get($name)
+    {
+        if (!isset($this->data[$name])) {
+            return null;
+        }
+
+        return \json_decode(\json_encode($this->data))->$name;
+    }
+
+    /**
+     * @param string $name
+     * @param mixed  $value
+     */
+    public function __set($name, $value)
+    {
+        $this->data[$name] = $value;
+    }
+
+    /**
+     * @param string $name
+     *
+     * @return bool
+     */
+    public function __isset($name)
+    {
+        return isset($this->data[$name]);
+    }
+
+    /**
+     * @param $name
+     *
+     * @return void
+     */
+    public function __unset($name)
+    {
+        unset($this->data[$name]);
+    }
+}

+ 33 - 0
vendor/alibabacloud/client/src/Traits/RegionTrait.php

xqd
@@ -0,0 +1,33 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+use AlibabaCloud\Client\Filter\ClientFilter;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Trait RegionTrait
+ *
+ * @package AlibabaCloud\Client\Traits
+ */
+trait RegionTrait
+{
+
+    /**
+     * @var string|null
+     */
+    public $regionId;
+
+    /**
+     * @param string $regionId
+     *
+     * @return $this
+     * @throws ClientException
+     */
+    public function regionId($regionId)
+    {
+        $this->regionId = ClientFilter::regionId($regionId);
+
+        return $this;
+    }
+}

+ 90 - 0
vendor/alibabacloud/client/src/Traits/RequestTrait.php

xqd
@@ -0,0 +1,90 @@
+<?php
+
+namespace AlibabaCloud\Client\Traits;
+
+use AlibabaCloud\Client\AlibabaCloud;
+use AlibabaCloud\Client\Filter\Filter;
+use AlibabaCloud\Client\Request\UserAgent;
+use AlibabaCloud\Client\Request\RpcRequest;
+use AlibabaCloud\Client\Request\RoaRequest;
+use AlibabaCloud\Client\Exception\ClientException;
+
+/**
+ * Trait RequestTrait
+ *
+ * @package   AlibabaCloud\Client\Traits
+ *
+ * @mixin     AlibabaCloud
+ */
+trait RequestTrait
+{
+    /**
+     * @param string $name
+     * @param string $value
+     *
+     * @throws ClientException
+     */
+    public static function appendUserAgent($name, $value)
+    {
+        Filter::name($name);
+        Filter::value($value);
+
+        UserAgent::append($name, $value);
+    }
+
+    /**
+     * @param array $userAgent
+     */
+    public static function withUserAgent(array $userAgent)
+    {
+        UserAgent::with($userAgent);
+    }
+
+    /**
+     * @param array $options
+     *
+     * @return RpcRequest
+     * @throws ClientException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public static function rpcRequest(array $options = [])
+    {
+        return self::rpc($options);
+    }
+
+    /**
+     * @param array $options
+     *
+     * @return RpcRequest
+     * @throws ClientException
+     */
+    public static function rpc(array $options = [])
+    {
+        return new RpcRequest($options);
+    }
+
+    /**
+     * @param array $options
+     *
+     * @return RoaRequest
+     * @throws ClientException
+     * @deprecated
+     * @codeCoverageIgnore
+     */
+    public static function roaRequest(array $options = [])
+    {
+        return self::roa($options);
+    }
+
+    /**
+     * @param array $options
+     *
+     * @return RoaRequest
+     * @throws ClientException
+     */
+    public static function roa(array $options = [])
+    {
+        return new RoaRequest($options);
+    }
+}

+ 4024 - 0
vendor/alibabacloud/sdk/CHANGELOG.md

xqd
@@ -0,0 +1,4024 @@
+# CHANGELOG
+
+## 1.8.662 - 2020-11-25
+- Add extension field for image translation.
+
+
+## 1.8.661 - 2020-11-24
+- Create TSDB Open api.
+
+
+## 1.8.660 - 2020-11-24
+- Create TSDB Open api.
+
+
+## 1.8.659 - 2020-11-24
+- Create lindorm Open api.
+
+
+## 1.8.658 - 2020-11-24
+- Create lindorm Open api.
+
+
+## 1.8.657 - 2020-11-24
+- Update SearchFace.
+
+
+## 1.8.656 - 2020-11-24
+- Generated 2020-01-01 for `ddoscoo`.
+
+
+## 1.8.655 - 2020-11-23
+- Supported multiple Language.
+
+
+## 1.8.654 - 2020-11-23
+- Add LivenessDetect API.
+
+
+## 1.8.653 - 2020-11-20
+- Support ListExecutions with filter functionality.
+
+
+## 1.8.652 - 2020-11-20
+- Public beta version.
+- Add Api Overseas.
+
+
+## 1.8.651 - 2020-11-20
+- Add a new interface for asynchronous image translation.
+
+
+## 1.8.650 - 2020-11-20
+- Update DetectFace.
+- Update RecognizeFace.
+
+
+## 1.8.649 - 2020-11-19
+- Generated 2020-07-02 for `scsp`.
+
+
+## 1.8.648 - 2020-11-19
+- Update DescribeDedicatedClusterInstanceList return data.
+
+
+## 1.8.647 - 2020-11-19
+- Update data API.
+
+
+## 1.8.646 - 2020-11-19
+- Update data API.
+
+
+## 1.8.645 - 2020-11-19
+- Update GenerateHumanAnimeStyle.
+
+
+## 1.8.644 - 2020-11-19
+- Update SegmentBody.
+
+
+## 1.8.643 - 2020-11-19
+- Supported backend interface for ICBU.
+
+
+## 1.8.642 - 2020-11-18
+- Update DescribeDedicatedClusterInstanceList InstanceStatus type.
+
+
+## 1.8.641 - 2020-11-18
+- Generated 2018-01-11 for `rtc`.
+
+
+## 1.8.640 - 2020-11-18
+- Supported webpage scan.
+
+
+## 1.8.639 - 2020-11-17
+- Support event type in timeline of resource properties.
+- Support resourceOwnerId in evaluation result.
+- Support resource directory in config rule scene.
+- Fix terraform related bugs.
+
+
+## 1.8.638 - 2020-11-17
+- Supported International-26888 Sites Region Endpoints.
+
+
+## 1.8.637 - 2020-11-17
+- Supported International-26888 Sites Region Endpoints.
+
+
+## 1.8.636 - 2020-11-16
+- Nat public IP supports the ISP attribute.
+
+
+## 1.8.635 - 2020-11-16
+- Add a new interface for asynchronous image translation.
+
+
+## 1.8.634 - 2020-11-16
+- Update videoenhan.
+
+
+## 1.8.633 - 2020-11-16
+- Update videoseg.
+
+
+## 1.8.632 - 2020-11-16
+- Update videorecog.
+
+
+## 1.8.631 - 2020-11-16
+- Update objectdet.
+
+
+## 1.8.630 - 2020-11-16
+- Update imgsearch.
+
+
+## 1.8.629 - 2020-11-16
+- Update imagerecog.
+
+
+## 1.8.628 - 2020-11-16
+- Update goodstech.
+
+
+## 1.8.627 - 2020-11-13
+- Update Imageaudit.
+
+
+## 1.8.626 - 2020-11-13
+- Add DeccribeEngineVersion DescribeTasks DescribeInstanceConfig and more APIs.
+
+
+## 1.8.625 - 2020-11-13
+- Update DetectLungNodule.
+
+
+## 1.8.624 - 2020-11-13
+- Fix GetBranchInfo and DeleteBranch API 404 error.
+- Add ListRepositoryBranches and GetGroupDetail API.
+
+
+## 1.8.623 - 2020-11-13
+- Release ErasePerson.
+
+
+## 1.8.622 - 2020-11-13
+- Release DetectCardScreenshot RecognizePoiName.
+
+
+## 1.8.621 - 2020-11-13
+- Release GenerateHumanAnimeStyle CountCrowd.
+
+
+## 1.8.620 - 2020-11-13
+- Release SegmentHDSky SegmentHDCommonImage.
+
+
+## 1.8.619 - 2020-11-12
+- Support drm.
+
+
+## 1.8.618 - 2020-11-12
+- Fixed the display problem of the repo page.
+
+
+## 1.8.617 - 2020-11-12
+- Generated 2019-06-01 for `smc`.
+
+
+## 1.8.616 - 2020-11-12
+- Update new version.
+
+
+## 1.8.615 - 2020-11-12
+- Add API OpenOnsService which can active ons service.
+
+
+## 1.8.614 - 2020-11-12
+- Update Scdn API.
+
+
+## 1.8.613 - 2020-11-12
+- Support execute database script via open api.
+
+
+## 1.8.612 - 2020-11-12
+- Generated 2014-05-26 for `Ecs`.
+
+
+## 1.8.611 - 2020-11-12
+- Update cert API.
+
+
+## 1.8.610 - 2020-11-12
+- Update cert API.
+
+
+## 1.8.609 - 2020-11-12
+- Release latest features.
+
+
+## 1.8.608 - 2020-11-12
+- Update data API.
+
+
+## 1.8.607 - 2020-11-12
+- Add API OpenOnsService which can active ons service.
+
+
+## 1.8.606 - 2020-11-12
+- Add SaveTraceAppConfig api.
+
+
+## 1.8.605 - 2020-11-12
+- Update HasRenewChangeOrder type to Boolean in DescribeInstances.
+
+
+## 1.8.604 - 2020-11-12
+- Generated 2018-12-12 for `vs`.
+
+
+## 1.8.603 - 2020-11-12
+- Add Pipeline Member api.
+
+
+## 1.8.602 - 2020-11-12
+- Generated 2020-05-18 for `dataworks-public`.
+
+
+## 1.8.601 - 2020-11-12
+- Generated 2016-11-01 for `live`.
+
+
+## 1.8.600 - 2020-11-12
+- Sync cdn APIs.
+
+
+## 1.8.599 - 2020-11-12
+- Add Content.
+
+
+## 1.8.598 - 2020-11-12
+- Generated 2014-05-26 for `Ecs`.
+
+
+## 1.8.597 - 2020-11-12
+- Minor update for r-kvstore.
+
+
+## 1.8.596 - 2020-11-12
+- Generated 2018-06-01 for `dataworks-public`.
+
+
+## 1.8.595 - 2020-11-12
+- Generated 2016-11-01 for `live`.
+
+
+## 1.8.594 - 2020-11-12
+- GetTitleIntelligence add interface.
+
+
+## 1.8.593 - 2020-11-12
+- Fix bug.
+
+
+## 1.8.592 - 2020-11-12
+- Support Sampling for jaeger.
+
+
+## 1.8.591 - 2020-11-12
+- Add alarm notification language settings.
+
+
+## 1.8.590 - 2020-11-12
+- Generated 2018-06-01 for `dataworks-public`.
+
+
+## 1.8.589 - 2020-11-12
+- Generated 2018-07-13 for `Ft`.
+
+
+## 1.8.588 - 2020-11-12
+- Supported Open Api.
+
+
+## 1.8.587 - 2020-11-12
+- Support OpenAPI.
+
+
+## 1.8.586 - 2020-11-12
+- Generated 2018-07-13 for `Ft`.
+
+
+## 1.8.585 - 2020-11-12
+- Update DescribeTrails Response.
+
+
+## 1.8.584 - 2020-11-5
+- Support modifyInstnaceType.
+
+
+## 1.8.583 - 2020-11-4
+- Generated 2019-01-01 for `Cassandra`.
+
+
+## 1.8.582 - 2020-11-4
+- Support modifyInstnaceType.
+
+
+## 1.8.581 - 2020-11-4
+- Generated 2019-01-01 for `Cassandra`.
+
+
+## 1.8.580 - 2020-11-4
+- Support modifyInstnaceType.
+
+
+## 1.8.579 - 2020-11-4
+- Generated 2018-07-13 for `Ft`.
+
+
+## 1.8.578 - 2020-11-4
+- Generated 2018-07-13 for `Ft`.
+
+
+## 1.8.577 - 2020-11-3
+- Minor update for r-kvstore.
+
+
+## 1.8.576 - 2020-11-3
+- Update data API.
+
+
+## 1.8.575 - 2020-11-2
+- Support create serverless by day price type.
+
+
+## 1.8.574 - 2020-11-1
+- Supported All Console APIs.
+
+
+## 1.8.573 - 2020-10-28
+- Support GetParameters, GetParametersByPath, GetSecretParameters, GetSecretParametersByPath.
+
+
+## 1.8.572 - 2020-10-28
+- Supported all language sdk.
+- Fixed some bugs for polardbx.
+
+
+## 1.8.571 - 2020-10-28
+- Supported golang sdk.
+- Fixed some bugs for drds.
+
+
+## 1.8.570 - 2020-10-27
+- Generated 2020-05-18 for `dataworks-public`.
+
+
+## 1.8.569 - 2020-10-27
+- Support Sampling for jaeger.
+
+
+## 1.8.568 - 2020-10-27
+- Fix bug.
+
+
+## 1.8.567 - 2020-10-27
+- Add role authority management.
+
+
+## 1.8.566 - 2020-10-26
+- Generated 2014-05-26 for `Ecs`.
+
+
+## 1.8.565 - 2020-10-26
+- Generated 2016-11-01 for `live`.
+
+
+## 1.8.564 - 2020-10-26
+- Supported PaymentType for DescribeDnsProductInstance.
+
+
+## 1.8.563 - 2020-10-26
+- Update ScalingConfig parameters.
+
+
+## 1.8.562 - 2020-10-23
+- Change Configuration.
+
+
+## 1.8.561 - 2020-10-23
+- Support feedback.
+
+
+## 1.8.560 - 2020-10-22
+- Add Pipeline Member api.
+
+
+## 1.8.559 - 2020-10-22
+- Update data API.
+
+
+## 1.8.558 - 2020-10-22
+- Update data API.
+
+
+## 1.8.557 - 2020-10-22
+- Update cert API.
+
+
+## 1.8.556 - 2020-10-21
+- DescribeAvailableResource support AcceptLanguage.
+
+
+## 1.8.555 - 2020-10-21
+- Change Documentation configuration.
+
+
+## 1.8.554 - 2020-10-21
+- Cloud Storage Gateway openapi sdk is released.
+
+
+## 1.8.553 - 2020-10-21
+- Release latest features.
+
+
+## 1.8.552 - 2020-10-21
+- Change Documentation configuration.
+
+
+## 1.8.551 - 2020-10-21
+- Change Documentation configuration.
+
+
+## 1.8.550 - 2020-10-21
+- Add custom person interfaces, support registration, update etc.
+- Optimize updateSmarttagTemplate interface, set some parameters as optional.
+
+
+## 1.8.549 - 2020-10-21
+- Update cert API.
+
+
+## 1.8.548 - 2020-10-21
+- Add PHP sdk.
+
+
+## 1.8.547 - 2020-10-20
+- Add LivenessFaceVerify API.
+
+
+## 1.8.546 - 2020-10-20
+- Update Configuration.
+
+
+## 1.8.545 - 2020-10-20
+- Add isv interface.
+
+
+## 1.8.544 - 2020-10-20
+- AddDeleteSortScriptFileApi.
+
+
+## 1.8.543 - 2020-10-20
+- Generated 2016-11-01 for `live`.
+
+
+## 1.8.542 - 2020-10-19
+- Add a new interface for asynchronous image translation.
+
+
+## 1.8.541 - 2020-10-16
+- Update OTA API, including ListOTAModuleByProduct, DeleteOTAModule.
+
+
+## 1.8.540 - 2020-10-16
+- Supported AndroidNotificationNotifyId for Push and MassPush.
+- Supported iOSNotificationCollapseId for Push and MassPush.
+
+
+## 1.8.539 - 2020-10-16
+- Update cert API.
+
+
+## 1.8.538 - 2020-10-16
+- Update cert API.
+
+
+## 1.8.537 - 2020-10-15
+- Supported TAG APIs.
+
+
+## 1.8.536 - 2020-10-15
+- Add SaveTraceAppConfig api.
+
+
+## 1.8.535 - 2020-10-15
+- Generated 2018-06-01 for `dataworks-public`.
+
+
+## 1.8.534 - 2020-10-15
+- Generated 2018-06-01 for `dataworks-public`.
+
+
+## 1.8.533 - 2020-10-14
+- Generated 2014-05-26 for `Ecs`.
+
+
+## 1.8.532 - 2020-10-13
+- Add Content.
+
+
+## 1.8.531 - 2020-10-13
+- Add describe devices to return device status.
+
+
+## 1.8.530 - 2020-10-13
+- Update Scdn API.
+
+
+## 1.8.529 - 2020-10-13
+- Sync cdn APIs.
+
+
+## 1.8.528 - 2020-10-13
+- Update HasRenewChangeOrder type to Boolean in DescribeInstances.
+
+
+## 1.8.527 - 2020-10-13
+- Add describe devices to return device status.
+
+
+## 1.8.526 - 2020-10-13
+- Add spotDuration support.
+
+
+## 1.8.525 - 2020-10-13
+- GetTitleIntelligence add interface.
+
+
+## 1.8.524 - 2020-10-13
+- Generated 2018-01-11 for `rtc`.
+
+
+## 1.8.523 - 2020-10-13
+- Add DeviceCenter API, including QueryDeviceBySQL.
+- Add OTA API, including ListOTAModuleByProduct, DeleteOTAModule.
+- Update error message in response with InvokeThingService, SetDeviceProperty.
+- Update OTA API, including CreateOTAModule, QueryDeviceVersionCountByPkFromOTA, QueryFirmwareByUid.
+- Update thing model API, ImportThingModelTsl.
+
+
+## 1.8.522 - 2020-10-13
+- Generated 2016-11-01 for `live`.
+
+
+## 1.8.521 - 2020-10-13
+- Generated 2018-01-11 for `rtc`.
+
+
+## 1.8.520 - 2020-10-13
+- Generated 2018-12-12 for `vs`.
+
+
+## 1.8.519 - 2020-10-12
+- Support add webhook, get repository info via id or path.
+
+
+## 1.8.518 - 2020-10-12
+- Add list Organizations.
+
+
+## 1.8.517 - 2020-10-12
+- ChatApp third version.
+- Add contack check api.
+
+
+## 1.8.516 - 2020-10-9
+- Update Scdn API.
+
+
+## 1.8.515 - 2020-10-9
+- Update DescribeCdnUserBillHistory API.
+
+
+## 1.8.514 - 2020-10-9
+- Update SetVideoSeekConfig API.
+
+
+## 1.8.513 - 2020-9-29
+- Add API OpenOnsService which can active ons service.
+
+
+## 1.8.512 - 2020-9-29
+- Add API OpenOnsService which can active ons service.
+
+
+## 1.8.511 - 2020-9-29
+- Add API OpenOnsService which can active ons service.
+
+
+## 1.8.510 - 2020-9-29
+- Add API OpenOnsService which can active ons service.
+
+
+## 1.8.509 - 2020-9-28
+- Update Scdn API.
+
+
+## 1.8.508 - 2020-9-28
+- Support filtering keys and secrets.
+- Support opening KMS service and describing service status by API.
+- Add a prefix limitation for SecretName.
+
+
+## 1.8.507 - 2020-9-27
+- Update domain API.
+
+
+## 1.8.506 - 2020-9-27
+- Support Open Service API.
+
+
+## 1.8.505 - 2020-9-25
+- Support DescribeSuspEventQuaraFiles API.
+- Support RefreshContainerAsserts API.
+
+
+## 1.8.504 - 2020-9-24
+- ContrastFaceVerify API Add Model Parameter.
+
+
+## 1.8.503 - 2020-9-24
+- Add a new api named SubmitAIImageAuditJob to submit image ai detection job.
+- Add a new api named CreateDNADB to create a DNA analysis library.
+- Add a new api named ListDNADB to query the list of DNA analysis libraries.
+- Add a new api named GetDNADB to query specified DNA analysis library.
+- Add a new field DNADBId to the request parameter Config structure for SubmitAIJob api.
+
+
+## 1.8.502 - 2020-9-23
+- Add spotDuration support.
+
+
+## 1.8.501 - 2020-9-23
+- Some new parameters are supported.
+
+
+## 1.8.500 - 2020-9-23
+- Update domain API.
+
+
+## 1.8.499 - 2020-9-23
+- Update Scdn API.
+
+
+## 1.8.498 - 2020-9-23
+- Sync cdn APIs.
+
+
+## 1.8.497 - 2020-9-22
+- Generated 2019-03-08 for `ivision`.
+
+
+## 1.8.496 - 2020-9-22
+- Generated 2018-01-11 for `rtc`.
+
+
+## 1.8.495 - 2020-9-22
+- Generated 2018-12-12 for `vs`.
+
+
+## 1.8.494 - 2020-9-22
+- Generated 2016-11-01 for `live`.
+
+
+## 1.8.493 - 2020-9-21
+- Interface add column wordCount.
+
+
+## 1.8.492 - 2020-9-21
+- Add search object.
+
+
+## 1.8.491 - 2020-9-20
+- Add describe devices to return device status.
+
+
+## 1.8.490 - 2020-9-18
+- Add alarm notification language settings.
+
+
+## 1.8.489 - 2020-9-17
+- GetTitleIntelligence add interface.
+
+
+## 1.8.488 - 2020-9-16
+- Add Content.
+
+
+## 1.8.487 - 2020-9-15
+- Add describe devices to return device status.
+
+
+## 1.8.486 - 2020-9-11
+- Support execute database script via open api.
+
+
+## 1.8.485 - 2020-9-10
+- Add DisableBackupLog.
+- Add EnableBackupLog.
+- Add ReleaseBackupPlan.
+- Add ModifyStorageStrategy.
+- Modify ModifyBackupStrategy.
+- Modify ModifyBackupSetDownloadRules.
+
+
+## 1.8.484 - 2020-9-10
+- Update HasRenewChangeOrder type to Boolean in DescribeInstances.
+
+
+## 1.8.483 - 2020-9-9
+- Add support cn-beijing service region.
+- Add ai video cover interface,include submit and query.
+- Add dynamic image query interface.
+- Update SubmitMediaAuditJob support MediaAuditConfiguration to set ResourceType.
+
+
+## 1.8.482 - 2020-9-8
+- Supported backend interface for ICBU.
+
+
+## 1.8.481 - 2020-9-7
+- Support parameter APIs.
+
+
+## 1.8.480 - 2020-9-4
+- Sync cdn APIs.
+
+
+## 1.8.479 - 2020-9-4
+- Update Scdn API.
+
+
+## 1.8.478 - 2020-9-4
+- Update domain API.
+
+
+## 1.8.477 - 2020-9-4
+- Add GetImageQuality API.
+- Add more info as parameters to Images related APIs.
+
+
+## 1.8.476 - 2020-9-3
+- Generated 2020-07-02 for `scsp`.
+
+
+## 1.8.475 - 2020-9-3
+- Generated 2020-07-02 for `scsp`.
+
+
+## 1.8.474 - 2020-9-2
+- Support sg for ml region.
+
+
+## 1.8.473 - 2020-9-2
+- ChatApp second version.
+- Support new message fomat.
+
+
+## 1.8.472 - 2020-9-2
+- Meshstress.
+
+
+## 1.8.471 - 2020-9-2
+- Supported AndroidNotificationHuaweiChannel for Push and MassPush.
+
+
+## 1.8.470 - 2020-9-2
+- Supported AndroidNotificationHuaweiChannel for Push and MassPush.
+
+
+## 1.8.469 - 2020-9-1
+- Add Smart Verify API.
+
+
+## 1.8.468 - 2020-9-1
+- Generated 2020-07-02 for `scsp`.
+
+
+## 1.8.467 - 2020-9-1
+- Update Parameter.
+
+
+## 1.8.466 - 2020-8-31
+- Support PersonList.
+
+
+## 1.8.465 - 2020-8-31
+- Generated 2020-07-02 for `scsp`.
+
+
+## 1.8.464 - 2020-8-31
+- GetPersonList Support LastShotTime.
+
+
+## 1.8.463 - 2020-8-31
+- Supported AAA for BBB.
+- Fixed bugs for CCC.
+
+
+## 1.8.462 - 2020-8-31
+- Supported AAA for BBB.
+- Fixed bugs for CCC.
+
+
+## 1.8.461 - 2020-8-31
+- Supported AAA for BBB.
+- Fixed bugs for CCC.
+
+
+## 1.8.460 - 2020-8-31
+- Add list person visit count API.
+
+
+## 1.8.459 - 2020-8-28
+- Add name.
+
+
+## 1.8.458 - 2020-8-28
+- Support multiple security group for one ehpc cluster.
+- Update GWS apis.
+
+
+## 1.8.457 - 2020-8-28
+- Supported Add GetAlgorithmHistoryResult.
+
+
+## 1.8.456 - 2020-8-27
+- Update parameter.
+
+
+## 1.8.455 - 2020-8-26
+- Generated 2020-06-29 for `alinlp`.
+
+
+## 1.8.454 - 2020-8-26
+- Generated 2020-06-29 for `alinlp`.
+
+
+## 1.8.453 - 2020-8-25
+- Generated 2020-08-01 for `SmartHosting`.
+
+
+## 1.8.452 - 2020-8-25
+- Add list person visit count API.
+
+
+## 1.8.451 - 2020-8-25
+- Video Content analytics template introduced to this SDK.
+
+
+## 1.8.450 - 2020-8-24
+- Add project api.
+
+
+## 1.8.449 - 2020-8-24
+- Edit QueryMetricByPage api.
+
+
+## 1.8.448 - 2020-8-21
+- Add QueryMetricByPage api.
+- Add GetAppApiByPage api.
+
+
+## 1.8.447 - 2020-8-19
+- Add DescribeLiveDomainCertificateInfo.
+
+
+## 1.8.446 - 2020-8-19
+- Generated 2020-08-01 for `SmartHosting`.
+
+
+## 1.8.445 - 2020-8-18
+- Add API RenewAppGroup.
+
+
+## 1.8.444 - 2020-8-17
+- Add GetTrace api.
+- Edit Aler api.
+
+
+## 1.8.443 - 2020-8-17
+- Add pipeline status api.
+
+
+## 1.8.442 - 2020-8-17
+- Add Api HighlightGameVideo.
+
+
+## 1.8.441 - 2020-8-17
+- Add Api HighlightGameVideo.
+
+
+## 1.8.440 - 2020-8-17
+- Fix create project task.
+
+
+## 1.8.439 - 2020-8-14
+- Add POP-Model-related APIs.
+
+
+## 1.8.438 - 2020-8-14
+- Add sdk.
+
+
+## 1.8.437 - 2020-8-14
+- Supported Api DetectIPCPedestrian.
+
+
+## 1.8.436 - 2020-8-14
+- Supported CheckCloudResourceAuthorized API.
+
+
+## 1.8.435 - 2020-8-14
+- Add project Api.
+
+
+## 1.8.434 - 2020-8-13
+- Add PipCode and CommodityCode for QueryInstanceBill, QueryBillOverview, QueryBill, QuerySettleBill, QueryAccountBill, QuerySplitItemBill.
+- Support BillOwnerId filter for QueryInstanceBill, QueryBillOverview, QueryBill, QuerySettleBill, QueryAccountBill, QuerySplitItemBill.
+
+
+## 1.8.433 - 2020-8-13
+- Release DetectKneeXRay DetectSpineMRI TranslateMed.
+
+
+## 1.8.432 - 2020-8-13
+- Release DetectKneeXRay DetectSpineMRI TranslateMed.
+
+
+## 1.8.431 - 2020-8-13
+- DescribePrice update amount parameters type, float to string.
+- Add ResourceGroupId parameter to support resource group.
+
+
+## 1.8.430 - 2020-8-13
+- Release SegmentHalfBody.
+
+
+## 1.8.429 - 2020-8-12
+- Add pipeline status api.
+
+
+## 1.8.428 - 2020-8-11
+- Add ResourceGroup in resource snapshot.
+
+
+## 1.8.427 - 2020-8-10
+- Generated 2020-05-18 for `dataworks-public`.
+
+
+## 1.8.426 - 2020-8-8
+- Update SearchImage.
+
+
+## 1.8.425 - 2020-8-7
+- GetTitleDiagnose GetTitleGenerate GetImageTranslate supported.
+
+
+## 1.8.424 - 2020-8-7
+- Generated 2020-05-18 for `dataworks-public`.
+
+
+## 1.8.423 - 2020-8-7
+- GetTitleDiagnose GetTitleGenerate GetImageTranslate supported.
+
+
+## 1.8.422 - 2020-8-7
+- Add FindServiceList and GetService qps.
+
+
+## 1.8.421 - 2020-8-6
+- Update OTA API, including CreateOTAStaticUpgradeJob,CreateOTADynamicUpgradeJob and QueryOTAJob.
+
+
+## 1.8.420 - 2020-8-6
+- Add Smart Cloudauth API.
+
+
+## 1.8.419 - 2020-8-4
+- Update RecognizeTable.
+
+
+## 1.8.418 - 2020-8-4
+- Supported for deploy updateStrategy.
+
+
+## 1.8.417 - 2020-8-3
+- Fix Some API Response Define.
+
+
+## 1.8.416 - 2020-8-3
+- Add source picture url for Monitor.
+
+
+## 1.8.415 - 2020-8-3
+- Add Voice Synchronous Scan API.
+
+
+## 1.8.414 - 2020-8-3
+- Add ExtractPedestrianFeatureAttribute.
+
+
+## 1.8.413 - 2020-7-31
+- Edit GetStack api.
+
+
+## 1.8.412 - 2020-7-30
+- Update DetectCelebrity.
+
+
+## 1.8.411 - 2020-7-30
+- Add Smart Cloudauth API.
+
+
+## 1.8.410 - 2020-7-30
+- Add ABTest-related APIs.
+- Add UserAnalyzer-related APIs.
+- Add API ListSortExpressions.
+- Fix property tag_label of response of ListInterventionDictionaryEntries.
+
+
+## 1.8.409 - 2020-7-30
+- Add ChangeVideoSize.
+
+
+## 1.8.408 - 2020-7-30
+- Add SegmentLogo SegmentScene.
+
+
+## 1.8.407 - 2020-7-30
+- Add DetectCelebrity.
+
+
+## 1.8.406 - 2020-7-30
+- Supported ChatApp for SDK.
+
+
+## 1.8.405 - 2020-7-29
+- Add CreateGetDBListFromAgentTask.
+- Add GetDBListFromAgent.
+
+
+## 1.8.404 - 2020-7-29
+- API GetTaskStatus return task detail.
+
+
+## 1.8.403 - 2020-7-29
+- Generated 2020-05-18 for `dataworks-public`.
+
+
+## 1.8.402 - 2020-7-28
+- Generated 2018-10-12 for `Airec`.
+
+
+## 1.8.401 - 2020-7-27
+- Supported CheckCloudResourceAuthorized API.
+
+
+## 1.8.400 - 2020-7-27
+- Add HSF apis.
+
+
+## 1.8.399 - 2020-7-24
+- Edit ListTraceApp api with add tags.
+- Edit SearchTraceAppByName api with add tags.
+- Edut SearchTraceAppByPage api with add tags.
+
+
+## 1.8.398 - 2020-7-24
+- Support GetImageCroppingSuggestions API.
+- Add Remarks to face group related APIs.
+- Add Model parameter to blind watermark related APIs.
+
+
+## 1.8.397 - 2020-7-24
+- First build.
+
+
+## 1.8.396 - 2020-7-23
+- Supported CloudGame.
+
+
+## 1.8.395 - 2020-7-23
+- Supported AAA for BBB.
+- Fixed bugs for CCC.
+
+
+## 1.8.394 - 2020-7-23
+- Update OTA API, including GenerateOTAUploadURL.
+
+
+## 1.8.393 - 2020-7-23
+- Add AddSecretBlacklist and DeleteSecretBlacklist.
+- Suppoort ASR.
+
+
+## 1.8.392 - 2020-7-23
+- Add GenerateAndExportDataKey, ExportDataKey, ReEncrypt api.
+
+
+## 1.8.391 - 2020-7-23
+- Add GenerateAndExportDataKey, ExportDataKey, ReEncrypt api.
+
+
+## 1.8.390 - 2020-7-22
+- Generated 2015-01-01 for `R-kvstore`.
+- Add SyncDtsStatus API.
+
+
+## 1.8.389 - 2020-7-22
+- Add source id for file uploader.
+
+
+## 1.8.388 - 2020-7-22
+- Add source id for file uploader.
+
+
+## 1.8.387 - 2020-7-21
+- Support Tag API.
+
+
+## 1.8.386 - 2020-7-21
+- Add algorithm type for ListPerson.
+
+
+## 1.8.385 - 2020-7-20
+- Add actions.
+
+
+## 1.8.384 - 2020-7-17
+- Add DescribeRegions.
+- Modify DescribeFullBackupList.
+- Modify DescribeBackupPlanList.
+- Modify DescribeRestoreRangeInfo.
+
+
+## 1.8.383 - 2020-7-17
+- Add actions.
+
+
+## 1.8.382 - 2020-7-16
+- Add more OpenAPIs related to QueryProcessor, FirstRank, SecondRank, etc.
+
+
+## 1.8.381 - 2020-7-15
+- Edit ListTraceApp api.
+- Edit SearchTraceAppByName api.
+- Edut SearchTraceAppByPage api.
+
+
+## 1.8.380 - 2020-7-15
+- Support ModifyImageAttribute by LaunchPermission.
+- Support ImageFamily.
+
+
+## 1.8.379 - 2020-7-14
+- Add Dynamic Registration APIs, including TransformClientId, DeleteClientIds, QueryClientIds, etc.
+- Update OTA API, including CreateOTAStaticUpgradeJob and QueryOTAJob.
+- Update Device Shadow API UpdateDeviceShadow.
+
+
+## 1.8.378 - 2020-7-14
+- Support Web SDK.
+
+
+## 1.8.377 - 2020-7-14
+- Fixed bug for service code.
+
+
+## 1.8.376 - 2020-7-14
+- Supported API for DescribeDohUserInfo.
+- Supported API for DescribeDohAccountStatistics.
+- Supported API for DescribeDohDomainStatistics.
+- Supported API for DescribeDohDomainStatisticsSummary.
+- Supported API for DescribeDohSubDomainStatistics.
+- Supported API for DescribeDohSubDomainStatisticsSummary.
+
+
+## 1.8.375 - 2020-7-10
+- Sdk for 109.
+
+
+## 1.8.374 - 2020-7-9
+- Add accountType for customer service.
+
+
+## 1.8.373 - 2020-7-9
+- Add accountType for renderOrder.
+
+
+## 1.8.372 - 2020-7-9
+- Add Log Monitoring API.
+- Add and modify non Alibaba Cloud host name API.
+
+
+## 1.8.371 - 2020-7-8
+- Remove GetFootwearPosition PullTakeShoesEvent PullTryOnShoesEvent.
+- Add GetFootwearEvent.
+- Please ignore the pd s pot.
+
+
+## 1.8.370 - 2020-7-8
+- Add video compose api.
+
+
+## 1.8.369 - 2020-7-8
+- Generated 2020-05-18 for `dataworks-public`.
+
+
+## 1.8.368 - 2020-7-8
+- Support hotword and hint.
+
+
+## 1.8.367 - 2020-7-7
+- Generated 2020-05-18 for `dataworks-public`.
+
+
+## 1.8.366 - 2020-7-6
+- Sdk for 101.
+
+
+## 1.8.365 - 2020-7-3
+- Supported UpdateUserBucketConfig.
+
+
+## 1.8.364 - 2020-7-3
+- Add ListResourceExecutionStatus API.
+- ListExecutions API supports filtering by resource id.
+- TriggerExecution API supports TimerTrigger.
+
+
+## 1.8.363 - 2020-7-3
+- Supports tag management APIs.
+
+
+## 1.8.362 - 2020-7-2
+- Build sdk.
+
+
+## 1.8.361 - 2020-7-2
+- Generated 2020-05-18 for `dataworks-public`.
+
+
+## 1.8.360 - 2020-7-2
+- SDK version 102.
+
+
+## 1.8.359 - 2020-7-2
+- Add GetFootwearPosition.
+- Add PullTakeShoesEvent.
+- Add PullTryOnShoesEvent.
+
+
+## 1.8.358 - 2020-7-2
+- Update endpoint.
+
+
+## 1.8.357 - 2020-7-2
+- CreateShardingDBInstance add ProtocolType, to support DynamoDB.
+- DescribeDBInstances add return ResourceGroupId.
+
+
+## 1.8.356 - 2020-7-1
+- Added API for modifying non Alibaba Cloud host names.
+- Fix the required type adjustment of several parameters.
+
+
+## 1.8.355 - 2020-7-1
+- SDK version 109.
+
+
+## 1.8.354 - 2020-7-1
+- SDK version 109.
+
+
+## 1.8.353 - 2020-7-1
+- ImageProcess First Version.
+
+
+## 1.8.352 - 2020-7-1
+- Sdk version 111.
+
+
+## 1.8.351 - 2020-7-1
+- SDK version 108.
+
+
+## 1.8.350 - 2020-7-1
+- Add API for GetMetadataAmount.
+
+
+## 1.8.349 - 2020-7-1
+- Support Saf For ExecuteExtendService.
+
+
+## 1.8.348 - 2020-6-30
+- Generated 2018-10-12 for `Airec`.
+
+
+## 1.8.347 - 2020-6-29
+- Supported Rotate.
+
+
+## 1.8.346 - 2020-6-29
+- Generated 2019-12-26 for `OutboundBot`.
+
+
+## 1.8.345 - 2020-6-29
+- Generated 2019-12-26 for `OutboundBot`.
+
+
+## 1.8.344 - 2020-6-29
+- Supported Rotate.
+
+
+## 1.8.343 - 2020-6-29
+- Supported gb28181 parent platform.
+
+
+## 1.8.342 - 2020-6-29
+- Add Model Parameter For InitFaceVerify API.
+
+
+## 1.8.341 - 2020-6-26
+- Supported Api EraseLogoInVideo.
+
+
+## 1.8.340 - 2020-6-24
+- Add DescribeBackupPlanBilling.
+- Modify ConfigureBackupPlan.
+- Modify CreateBackupPlan.
+- Modify CreateRestoreTask.
+- Modify DescribeRestoreTaskList.
+- Modify DescribeBackupPlanList.
+- Modify ModifyBackupSourceEndpoint.
+- Modify ModifyBackupStrategy.
+
+
+## 1.8.339 - 2020-6-23
+- Generated 2015-12-15 for `CS`.
+
+
+## 1.8.338 - 2020-6-23
+- Support SubmitOperationAuditInfo for Support self-service submission of approval information.
+- Support SubmitOperationCredentials for self-service submission of certificate information.
+- Support CancelOperationAudit for cancel audit.
+- Support GetOperationOssUploadPolic for get oss policy.
+- Support QueryOperationAuditInfoLis for query audit list.
+- Support QueryOperationAuditInfoDetail for query audit details.
+
+
+## 1.8.337 - 2020-6-23
+- Generated 2018-08-28 for `Tag`.
+
+
+## 1.8.336 - 2020-6-22
+- Add support cn-shenzhen region.
+
+
+## 1.8.335 - 2020-6-22
+- Add GetMultipleTrace api.
+- Add SearchTracesByPage api.
+- Add GetStack api.
+
+
+## 1.8.334 - 2020-6-21
+- Add persons API.
+
+
+## 1.8.333 - 2020-6-18
+- Supported TransformDBInstancePayType API.
+
+
+## 1.8.332 - 2020-6-18
+- Add GetAuthToken OpenAPI.
+
+
+## 1.8.331 - 2020-6-17
+- Supported sync create eni and assign private ip.
+
+
+## 1.8.330 - 2020-6-16
+- Support TargetImageId in ApplyNodes Interface.
+
+
+## 1.8.329 - 2020-6-15
+- Generated 2019-09-10 for `waf-openapi`.
+
+
+## 1.8.328 - 2020-6-15
+- Generated 2019-09-10 for `waf-openapi`.
+
+
+## 1.8.327 - 2020-6-12
+- Add CreateProduct API ProductSecret in Response.
+- Add AMQP APIs, including CreateSubscribeRelation, CreateConsumerGroup, etc.
+- Add LinkIoTEdge CreateSceneRule API.
+- Add LinkIoTEdge DeleteSceneRule API.
+- Add LinkIoTEdge UpdateSceneRule API.
+- Add LinkIoTEdge GetSceneRule API.
+- Add LinkIoTEdge QuerySceneRule API.
+- Add LinkIoTEdge EnableSceneRule API.
+- Add LinkIoTEdge DisableSceneRule API.
+- Add LinkIoTEdge TriggerSceneRule API.
+- Add LinkIoTEdge QuerySummarySceneRuleLog API.
+- Add LinkIoTEdge QueryDetailSceneRuleLog API.
+- Add LinkIoTEdge BindSceneRuleToEdgeInstance API.
+- Add LinkIoTEdge UnbindSceneRuleFromEdgeInstance API.
+- Add LinkIoTEdge QueryEdgeInstanceSceneRule API.
+
+
+## 1.8.326 - 2020-6-12
+- Update monitor related API.
+
+
+## 1.8.325 - 2020-6-12
+- Generated 2018-10-12 for `Airec`.
+
+
+## 1.8.324 - 2020-6-11
+- Support ServicePeriodUnit in QueryInstanceBill.
+
+
+## 1.8.323 - 2020-6-11
+- Supported AndroidNotificationVivoChannel for Push and MassPush.
+
+
+## 1.8.322 - 2020-6-9
+- Changed ServiceCode from `cr` to `acr`.
+
+
+## 1.8.321 - 2020-6-8
+- Support offline instance.
+
+
+## 1.8.320 - 2020-6-4
+- Generated 2019-12-26 for `OutboundBot`.
+
+
+## 1.8.319 - 2020-6-4
+- Update monitor related API.
+
+
+## 1.8.318 - 2020-6-4
+- Add SubmitMediaDNADeleteJob and ListMediaDNADeleteJob.
+- Modify GetMediaAuditResult interface, support ad logo and live result.
+- Modify GetMediaAuditResultTimeline interface, support ad logo and live result.
+
+
+## 1.8.317 - 2020-6-4
+- Update monitor related API.
+
+
+## 1.8.316 - 2020-6-3
+- DescribeCameraStatistics add filed.
+
+
+## 1.8.315 - 2020-6-2
+- Edit SearchTraces api.
+
+
+## 1.8.314 - 2020-5-29
+- Sdk version 111.
+
+
+## 1.8.313 - 2020-5-29
+- SDK version 108.
+
+
+## 1.8.312 - 2020-5-28
+- Supported AndroidNotificationXiaomiChannel for Push and MassPush.
+
+
+## 1.8.311 - 2020-5-27
+- Add app-group-management and quota-updating APIs.
+- Add app management APIs.
+
+
+## 1.8.310 - 2020-5-26
+- Support DescribeAllEntity API.
+
+
+## 1.8.309 - 2020-5-26
+- Add smartcall service api.
+
+
+## 1.8.308 - 2020-5-26
+- Add smartcall service api.
+
+
+## 1.8.307 - 2020-5-25
+- Supported auvsp protocol changes.
+- Supported start vod streams.
+- Supported stop vod streams.
+- Supported gb28281 alarm on device.
+
+
+## 1.8.306 - 2020-5-23
+- Generated 2015-01-01 for `R-kvstore`.
+- Add ModifyResourceGroup API.
+- DescribeInstanceAttribute return ResourceGroupId.
+
+
+## 1.8.305 - 2020-5-22
+- Add schedule crud api.
+
+
+## 1.8.304 - 2020-5-21
+- Support more error Codes.
+
+
+## 1.8.303 - 2020-5-20
+- Generated 2019-09-10 for `waf-openapi`.
+
+
+## 1.8.302 - 2020-5-20
+- Edit GetTrace and SearchTraces api.
+
+
+## 1.8.301 - 2020-5-20
+- Public beta version.
+- Add Api Overseas.
+
+
+## 1.8.300 - 2020-5-19
+- Public beta version.
+- Add Api Overseas.
+
+
+## 1.8.299 - 2020-5-19
+- Initial version.
+
+
+## 1.8.298 - 2020-5-18
+- Support sequence for listNodes.
+- Support StrictSatisfiedTargetCapacity for applyNodes.
+
+
+
+## 1.8.297 - 2020-5-18
+- Fix DescribeIpcLiveAddress , add in params.
+
+
+## 1.8.296 - 2020-5-17
+- Open API publish.
+
+
+## 1.8.295 - 2020-5-17
+- Open API publish.
+
+
+## 1.8.294 - 2020-5-17
+- Open API publish.
+
+
+## 1.8.293 - 2020-5-17
+- Open API publish.
+
+
+## 1.8.292 - 2020-5-15
+- Add LinkIoTEdge CreateEdgeInstanceChannel, BatchDeleteEdgeInstanceChannel, UpdateEdgeInstanceChannel, BatchGetEdgeInstanceChannel, QueryEdgeInstanceChannel, QueryEdgeInstanceDeviceByDriver, BatchGetEdgeInstanceDeviceDriver, BatchSetEdgeInstanceDeviceChannel, BatchGetEdgeInstanceDeviceChannel API.
+- Add LinkIoTEdge BindApplicationToEdgeInstance, UnbindApplicationFromEdgeInstance API.
+- Add LinkIoTEdge ReplaceEdgeInstanceGateway, ReleaseEdgeDriverVersion, BatchGetDeviceBindStatus API.
+
+
+## 1.8.291 - 2020-5-14
+- Generated 2015-01-01 for `R-kvstore`.
+- Fix DescribeCacheAnalysisReport return empty BigKeys because of wrong type defination.
+
+
+## 1.8.290 - 2020-5-14
+- Supported Grant Permission.
+- Supported Revoke Permission.
+
+
+## 1.8.289 - 2020-5-14
+- Add demo edition auth.
+
+
+## 1.8.288 - 2020-5-13
+- Add ListDevicesImages DescribeIpcLiveAddress.
+- Modify DescribeDevices.
+
+
+## 1.8.287 - 2020-5-13
+- Add ExportTas apis.
+
+
+## 1.8.286 - 2020-5-13
+- Generated 2019-09-10 for `waf-openapi`.
+
+
+## 1.8.285 - 2020-5-13
+- Supported AAA for BBB.
+- Fixed bugs for CCC.
+
+
+## 1.8.284 - 2020-5-13
+- Add ExportTas apis.
+
+
+## 1.8.283 - 2020-5-13
+- About 2019-03-07 and 2018-09-16 Version.
+
+
+## 1.8.282 - 2020-5-13
+- Generated 2018-12-12, 2018-12-07 for `UniMkt`.
+
+
+## 1.8.281 - 2020-5-12
+- Sdk version 109.
+
+
+## 1.8.280 - 2020-5-12
+- BugFix for DescribeProjectMessages not returned the totalCount property.
+
+
+## 1.8.279 - 2020-5-12
+- BugFix for DescribeProjectMessages not returned the totalCount property.
+
+
+## 1.8.278 - 2020-5-12
+- Supported DRM.
+
+
+## 1.8.277 - 2020-5-11
+- Add new openapi ApplyNodes.
+
+
+## 1.8.276 - 2020-5-11
+- Bugfix for DescribeProjectAttachments Integer AttachmentType updated to String AttachmentType.
+
+
+## 1.8.275 - 2020-5-11
+- Support CreationCategory for CreateDBCluster.
+
+
+## 1.8.274 - 2020-5-9
+- DescribeCamerasStatistics add pvType.
+
+
+## 1.8.273 - 2020-5-8
+- Support sg for region.
+
+
+## 1.8.272 - 2020-5-6
+- Describe describeAvailableResource.
+
+
+## 1.8.271 - 2020-4-30
+- Add prometheus ListDashboards api.
+
+
+## 1.8.270 - 2020-4-29
+- Add prometheus ListDashboards api.
+
+
+## 1.8.269 - 2020-4-29
+- Add prometheus ListDashboards api.
+
+
+## 1.8.268 - 2020-4-29
+- Supported VideoProduce.
+
+
+## 1.8.267 - 2020-4-29
+- Supported VideoProduce.
+
+
+## 1.8.266 - 2020-4-29
+- Supported VideoProduce.
+
+
+## 1.8.265 - 2020-4-29
+- Add ListTemplateVersions API.
+- GenerateExecutionPolicy supports TemplateVersion.
+- CreateTemplate and UpdateTemplate support VersionName.
+
+
+
+## 1.8.264 - 2020-4-29
+- Support groupId operations.
+
+
+## 1.8.263 - 2020-4-29
+- Add ExportTas apis.
+
+
+## 1.8.262 - 2020-4-29
+- Support Document Translation.
+- Support Lanuage Detection.
+
+
+## 1.8.261 - 2020-4-29
+- Sync cdn APIs.
+
+
+## 1.8.260 - 2020-4-29
+- Supported the Marketplace Delivery Center Project Api.
+- About Project info.
+
+
+## 1.8.259 - 2020-4-29
+- Add Scdn APIS.
+- Sync cdn APIS.
+
+
+## 1.8.258 - 2020-4-28
+- Generated 2018-12-12, 2018-12-07 for `UniMkt`.
+
+
+## 1.8.257 - 2020-4-28
+- Add CompareFaceVerify API.
+
+
+## 1.8.256 - 2020-4-28
+- Generated 2019-03-15 for `fnf`.
+
+
+## 1.8.255 - 2020-4-27
+- Support watermark.
+
+
+## 1.8.254 - 2020-4-27
+- Describe describeAvailableResource.
+
+
+## 1.8.253 - 2020-4-27
+- ContrastFaceVerify Return SubCode.
+
+
+## 1.8.252 - 2020-4-26
+- SDK versioin 101.
+
+
+## 1.8.251 - 2020-4-26
+- SDK version 108.
+
+
+## 1.8.250 - 2020-4-26
+- New api publish.
+
+
+## 1.8.249 - 2020-4-25
+- Generated 2015-01-01 for `R-kvstore`.
+- Add RestoreTime for CreateInstance API.
+
+
+## 1.8.248 - 2020-4-24
+- Template update.
+
+
+## 1.8.247 - 2020-4-24
+- Publish apis for ledger instances.
+- Publish apis for members.
+- Publish apis for time anchors.
+- Publish apis for endpoints.
+
+
+## 1.8.246 - 2020-4-24
+- Publish apis for ledger instances.
+- Publish apis for members.
+- Publish apis for time anchors.
+- Publish apis for endpoints.
+
+
+## 1.8.245 - 2020-4-23
+- Fixed bugs for MassPush API.
+
+
+## 1.8.244 - 2020-4-23
+- Add location info.
+
+
+## 1.8.243 - 2020-4-23
+- Support groupId operations.
+
+
+## 1.8.242 - 2020-4-22
+- Generated 2019-01-01 for `Cassandra`.
+
+
+## 1.8.241 - 2020-4-21
+- VideoSearch deploy SDK.
+
+
+## 1.8.240 - 2020-4-21
+- Supported API for DescribeTags.
+- Supported API for ListTagResources.
+- Supported API for TagResources.
+- Supported API for UntagResources.
+
+
+## 1.8.239 - 2020-4-21
+- Supported PackageDesign Apis.
+- Supported Api ListPackageDesignModelTypes.
+- Supported Api PreviewModelForPackageDesign.
+- Supported Api RenderImageForPackageDesign.
+- Supported Api GetRenderResult.
+
+
+## 1.8.238 - 2020-4-21
+- Add Statistics API.
+
+
+## 1.8.237 - 2020-4-20
+- Add TemplateId.
+
+
+## 1.8.236 - 2020-4-20
+- Fix FaceContrastPicture.
+
+
+## 1.8.235 - 2020-4-19
+- Multimedia poc modified.
+
+
+## 1.8.234 - 2020-4-16
+- Modify `SubmitSmarttagJob`.
+
+
+## 1.8.233 - 2020-4-16
+- Add ModifyWhiteIps.
+
+
+## 1.8.232 - 2020-4-16
+- Add BatchOptimization param in Stop and Start Instances.
+- Add RemoveSymbols in GetInstanceConsoleOutput.
+- Add ImageFamily in ModifyImageAttribute.
+- Customize InstanceType on DedicatedHosts is supported.
+- Add StorageCapacityUnit interfaces.
+- Add param Tag in CreateAutoSnapshotPolicy.
+
+
+## 1.8.231 - 2020-4-16
+- Add features for open api.
+
+
+## 1.8.230 - 2020-4-15
+- Add pre train service api.
+
+
+## 1.8.229 - 2020-4-15
+- CreateNode API add return NodeId.
+
+
+## 1.8.228 - 2020-4-15
+- Vision-poc response modified.
+
+
+## 1.8.227 - 2020-4-14
+- Support ListSensitiveColumns, ListSensitiveColumnsDetail API.
+- ListUsers API return user execute query count information.
+- Fix ListWorkFlowTemplates to return create user information.
+- UpdateUser API support to update user max execute query count.
+
+
+## 1.8.226 - 2020-4-14
+- Supported CreateSegmentBodyJob.
+
+
+## 1.8.225 - 2020-4-13
+- ImageProcess First Version.
+
+
+## 1.8.224 - 2020-4-13
+- Fix ListTaskExecutions SDK error.
+
+
+## 1.8.223 - 2020-4-10
+- Support GetOfficeEditURL.
+- Support RefreshOfficeEditToken.
+
+
+## 1.8.222 - 2020-4-10
+- Support DescribeIpv4Location.
+
+
+## 1.8.221 - 2020-4-9
+- Add prometheus api AddGrafana and AddIntegration.
+
+
+## 1.8.220 - 2020-4-9
+- Generated 2018-03-13 for `retailcloud`.
+
+
+## 1.8.219 - 2020-4-9
+- Generated 2015-01-01 for `R-kvstore`.
+- Add DescribePrice API.
+
+
+## 1.8.218 - 2020-4-9
+- Add DescribePrice API.
+
+
+## 1.8.217 - 2020-4-9
+- WAF OpenApi SDK Release.
+
+
+## 1.8.216 - 2020-4-9
+- Add DescribeDBClusterAvailableResources.
+
+
+## 1.8.215 - 2020-4-8
+- Add SubCode for DescribeFaceVerify.
+
+
+## 1.8.214 - 2020-4-7
+- Generated 2020-03-20 for `imgsearch`.
+
+
+## 1.8.213 - 2020-4-7
+- Generated 2019-12-30 for `facebody`.
+
+
+## 1.8.212 - 2020-4-7
+- Support namespaces.
+
+
+## 1.8.211 - 2020-4-3
+- Add trace api.
+- Add prometheus api.
+
+
+## 1.8.210 - 2020-4-3
+- Support shelf type for planogram position.
+
+
+## 1.8.209 - 2020-4-3
+- Support sort script.
+
+
+## 1.8.208 - 2020-4-3
+- Support lmItemId.
+- Support STSToken.
+
+
+## 1.8.207 - 2020-4-2
+- Add slo metrics.
+
+
+## 1.8.206 - 2020-4-2
+- Add API ContrastFaceVerify.
+
+
+## 1.8.205 - 2020-4-2
+- Support light up led lamp for ESL.
+
+
+## 1.8.204 - 2020-4-2
+- Support for WaitTimeSeconds for DescribeExecution.
+
+
+## 1.8.203 - 2020-4-1
+- DescribeVerifyToken API Add Parameters-UserIp and UserPhoneNumber and UserRegistTime.
+
+
+## 1.8.202 - 2020-4-1
+- Parameters is string in StartExecution Response.
+
+
+## 1.8.201 - 2020-4-1
+- Counters and Parameters are changed to Map in ListExections and StartExecution.
+
+
+## 1.8.200 - 2020-3-25
+- Supported describe appkey for rtc application.
+- Supported set property for rtc channel.
+- Fixed the missing error code description for rtc removeterminal.
+
+
+## 1.8.199 - 2020-3-25
+- SDK versioin 101.
+
+
+## 1.8.198 - 2020-3-25
+- Supported describe appkey for rtc application.
+- Supported set property for rtc channel.
+- Fixed the missing error code description for rtc removeterminal.
+
+
+## 1.8.197 - 2020-3-24
+- DescribeInstanceTypes Supports EniIpv6AddressQuantity.
+
+
+## 1.8.196 - 2020-3-24
+- DescribeInstanceTypes Supports EniIpv6AddressQuantity.
+
+
+## 1.8.195 - 2020-3-23
+- SDK version 107.
+
+
+## 1.8.194 - 2020-3-23
+- SDK version 100.
+
+
+## 1.8.193 - 2020-3-23
+- SDK version 107.
+
+
+## 1.8.192 - 2020-3-23
+- SDK version 100.
+
+
+## 1.8.191 - 2020-3-23
+- SDK versioin 100.
+
+
+## 1.8.190 - 2020-3-23
+- SDK version 107.
+
+
+## 1.8.189 - 2020-3-23
+- SDK version 100.
+
+
+## 1.8.188 - 2020-3-23
+- SDK version 107.
+
+
+## 1.8.187 - 2020-3-23
+- Generated 2015-01-01 for `R-kvstore`.
+- Add DescribeSecurityGroupConfiguration API.
+- Add ModifySecurityGroupConfiguration API.
+
+
+## 1.8.186 - 2020-3-23
+- Sdk version 107.
+
+
+## 1.8.185 - 2020-3-23
+- SDK version 107.
+
+
+## 1.8.184 - 2020-3-23
+- SDK version 101.
+
+
+## 1.8.183 - 2020-3-23
+- Generated 2014-08-15 for `Rds`.
+
+
+## 1.8.182 - 2020-3-19
+- UploadImageToLib add Urls.
+
+
+## 1.8.181 - 2020-3-19
+- UploadImageToLib add Urls.
+
+
+## 1.8.180 - 2020-3-18
+- Supported API for DescribeInstanceDomains.
+
+
+## 1.8.179 - 2020-3-18
+- ACM POP SDK.
+
+
+## 1.8.178 - 2020-3-18
+- Generated 2018-08-28 for `Tag`.
+
+
+## 1.8.177 - 2020-3-16
+- DescribeFaceVerify API Return DeviceToken Field.
+
+
+## 1.8.176 - 2020-3-16
+- Add exporter related API.
+
+
+## 1.8.175 - 2020-3-16
+- Release.
+- Add virtual host modification API.
+- Add exchange modification API.
+- Add queue modification API.
+- Add binding modification API.
+
+
+## 1.8.174 - 2020-3-16
+- Add ImageFamily paramters and apis, in Instance creation apis and Image query apis, and add DescribeImageFromFamily.
+- Add Instance batch operation apis RebootInstances StartInstances and StopInstances.
+- Add EncryptAlgorithm paramter in instance creati
+
+
+## 1.8.173 - 2020-3-13
+- ACM POP SDK.
+
+
+## 1.8.172 - 2020-3-12
+- Add new Api SegmentBody.
+
+
+## 1.8.171 - 2020-3-12
+- Add new Api SegmentBody.
+
+
+## 1.8.170 - 2020-3-11
+- Update structure for DescribeAvailableResource without compatible.
+
+
+## 1.8.169 - 2020-3-11
+- Support certificate translate.
+
+
+## 1.8.168 - 2020-3-11
+- Support certificate translate.
+
+
+## 1.8.167 - 2020-3-11
+- Support certificate translate.
+
+
+## 1.8.166 - 2020-3-11
+- Support certificate translate.
+
+
+## 1.8.165 - 2020-3-11
+- Add new Api SegmentBody.
+
+
+## 1.8.164 - 2020-3-11
+- Support certificate translate.
+
+
+## 1.8.163 - 2020-3-11
+- Public beta version.
+- Add Api GetMeetingMebers.
+
+
+## 1.8.162 - 2020-3-11
+- Supported ondemand record.
+- Supported ivision template binding.
+
+
+## 1.8.161 - 2020-3-10
+- ACM POP SDK.
+
+
+## 1.8.160 - 2020-3-10
+- Add ExportTas apis.
+
+
+## 1.8.159 - 2020-3-9
+- Add BackupStorageType.
+
+
+## 1.8.158 - 2020-3-9
+- Add EmotionConfidence to GetImage.
+
+
+## 1.8.157 - 2020-3-9
+- NlpAutoml update contract api.
+
+
+## 1.8.156 - 2020-3-6
+- Add LinkIoTEdge CreateEdgeOssPreSignedAddress API.
+
+
+## 1.8.155 - 2020-3-6
+- Add LinkIoTEdge CreateEdgeOssPreSignedAddress API.
+
+
+## 1.8.154 - 2020-3-6
+- Supported Saf for cn.
+
+
+## 1.8.153 - 2020-3-6
+- Supported Saf for cn.
+
+
+## 1.8.152 - 2020-3-6
+- Supported Saf for oversea.
+
+
+## 1.8.151 - 2020-3-6
+- Supported Saf for oversea.
+
+
+## 1.8.150 - 2020-3-6
+- Add request parameter groupType for OnsGroupCreate.
+- Add request parameter groupType for OnsGroupList.
+
+
+## 1.8.149 - 2020-3-5
+- Add param InstanceType for ListImages and ListCustomImages.
+- Fix error codes for SubmitJobs and so on.
+
+
+## 1.8.148 - 2020-3-5
+- Add CreateEdgeDriver, DeleteEdgeDriver, BatchGetEdgeDriver, QueryEdgeDriver, CreateEdgeDriverVersion, DeleteEdgeDriverVersion, UpdateEdgeDriverVersion, GetEdgeDriverVersion, QueryEdgeDriverVersion API.
+- Add ResetThing API, support reset thing topo and 
+
+
+## 1.8.147 - 2020-3-5
+- Add CreateEdgeDriver, DeleteEdgeDriver, BatchGetEdgeDriver, QueryEdgeDriver, CreateEdgeDriverVersion, DeleteEdgeDriverVersion, UpdateEdgeDriverVersion, GetEdgeDriverVersion, QueryEdgeDriverVersion API.
+- Add ResetThing API, support reset thing topo and 
+
+
+## 1.8.146 - 2020-3-5
+- Update send message noPresistFlag param.
+
+
+## 1.8.145 - 2020-3-4
+- Update.
+
+
+## 1.8.144 - 2020-3-4
+- Public beta version.
+- Add Api GetMeetingMebers.
+
+
+## 1.8.143 - 2020-3-3
+- Supported secretmanager stable version for kms.
+
+
+## 1.8.142 - 2020-3-3
+- Supported secretmanager stable version for kms.
+
+
+## 1.8.141 - 2020-3-3
+- GeoIP Databases SDK initial release.
+
+
+## 1.8.140 - 2020-3-3
+- Supported secretmanager for kms.
+
+
+## 1.8.139 - 2020-2-28
+- Add QueryPhoneNoAByTrackNo  and AddAxnTrackNo.
+
+
+## 1.8.138 - 2020-2-28
+- Supported for eip operation idempotence.
+
+
+## 1.8.137 - 2020-2-28
+- Supported for eip operation idempotence.
+
+
+## 1.8.136 - 2020-2-27
+- Add translate api.
+
+
+## 1.8.135 - 2020-2-27
+- Sixth version.
+
+
+## 1.8.134 - 2020-2-27
+- Sixth sdk version.
+
+
+## 1.8.133 - 2020-2-27
+- Sixth sdk version.
+
+
+## 1.8.132 - 2020-2-27
+- Sixth version.
+
+
+## 1.8.131 - 2020-2-27
+- Sixth version.
+
+
+## 1.8.130 - 2020-2-27
+- Sixth version.
+
+
+## 1.8.129 - 2020-2-27
+- Release Ft SDK.
+
+
+## 1.8.128 - 2020-2-26
+- Fix tag upper case parameters.
+- Fix patch.
+
+
+## 1.8.127 - 2020-2-26
+- Upgrade sdk.
+
+
+## 1.8.126 - 2020-2-26
+- Generated 2015-01-01 for `R-kvstore`.
+- Add VpcCloudInstanceId for DescribeInstanceAttribute.
+
+
+## 1.8.125 - 2020-2-26
+- Add InitFaceVerify and DescribeFaceVerify API.
+
+
+## 1.8.124 - 2020-2-25
+- Fix ListWorkFlowTemplates, ListWorkFlowNodes API Go SDK build error.
+
+
+## 1.8.123 - 2020-2-25
+- JAVA fifth sdk version.
+- PYTHON second sdk version.
+
+
+## 1.8.122 - 2020-2-25
+- Update backupsetDownloadset fun.
+
+
+## 1.8.121 - 2020-2-24
+- ImmediateDelete.
+- DescribeInstance CreateTimeUTC ExpireTimeUTC.
+- DescribeInstances CreateTimeUTC ExpireTimeUTC.
+- DescribeIpWhitelist Groups GroupName.
+- CreateCluster.
+
+
+## 1.8.120 - 2020-2-24
+- Release Ft SDK.
+
+
+## 1.8.119 - 2020-2-24
+- Release Ft SDK.
+
+
+## 1.8.118 - 2020-2-24
+- Add tag of list instance parameters.
+
+
+## 1.8.117 - 2020-2-24
+- Add tag of list instance parameters.
+
+
+## 1.8.116 - 2020-2-24
+- Generated 2018-06-12 for `VoiceNavigator`.
+
+
+## 1.8.115 - 2020-2-24
+- Generated 2019-12-26 for `OutboundBot`.
+
+
+## 1.8.114 - 2020-2-21
+- Support TAG API.
+
+
+## 1.8.113 - 2020-2-20
+- Support set accountType.
+
+
+## 1.8.112 - 2020-2-20
+- Generated 2019-09-28 for `reid`.
+
+
+## 1.8.111 - 2020-2-20
+- Fix the problem that the three APIs, disablesitemonitors, enablesitemonitors and modifysitemonitor, return result fields are not fully define.
+
+
+## 1.8.110 - 2020-2-20
+- Add new interface ListMaskDetectionResults to support to pull mask detection results.
+
+
+## 1.8.109 - 2020-2-20
+- Add new api ListUsers.
+- Supported userRole setting for api, CreateApp, UpdateApp, DescribeAppDetail.
+
+
+## 1.8.108 - 2020-2-18
+- Supported customized params in device apis.
+
+
+## 1.8.107 - 2020-2-15
+- Supported ListWorkFlowTemplates, ListWorkFlowNodes API.
+
+
+## 1.8.106 - 2020-2-15
+- Add DescribeDBClusterSSL.
+- Add ModifyDBClusterSSL.
+
+
+## 1.8.105 - 2020-2-14
+- Update default endpoints.
+
+
+## 1.8.104 - 2020-2-14
+- Add callback params to StartExecution API.
+- Support ListExecutions with Status API.
+
+
+## 1.8.103 - 2020-2-14
+- Update default endpoints.
+
+
+## 1.8.102 - 2020-2-14
+- Fix the field definition for the site monitoring option OptionJson.
+
+
+## 1.8.101 - 2020-2-13
+- ModifyNetworkInterfaceAttribute support modify QueueNumber.
+- DescribeNetworkInterfaces support QueueNumber.
+
+
+## 1.8.100 - 2020-2-13
+- Add Staging apis.
+
+
+## 1.8.99 - 2020-2-13
+- ModifyNetworkInterfaceAttribute support modify QueueNumber.
+- DescribeNetworkInterfaces support QueueNumber.
+
+
+## 1.8.98 - 2020-2-13
+- ModifyNetworkInterfaceAttribute support modify QueueNumber.
+- DescribeNetworkInterfaces support QueueNumber.
+
+
+## 1.8.97 - 2020-2-13
+- ModifyNetworkInterfaceAttribute support modify QueueNumber.
+- DescribeNetworkInterfaces support QueueNumber.
+
+
+## 1.8.96 - 2020-2-13
+- ModifyNetworkInterfaceAttribute support modify QueueNumber.
+- DescribeNetworkInterfaces support QueueNumber.
+
+
+## 1.8.95 - 2020-2-13
+- ModifyNetworkInterfaceAttribute support modify QueueNumber.
+- DescribeNetworkInterfaces support QueueNumber.
+
+
+## 1.8.94 - 2020-2-13
+- Add Staging apis.
+
+
+## 1.8.93 - 2020-2-13
+- Add Staging apis.
+
+
+## 1.8.92 - 2020-2-13
+- Add Staging apis.
+
+
+## 1.8.91 - 2020-2-13
+- Add Staging apis.
+
+
+## 1.8.90 - 2020-2-13
+- Add Staging apis.
+
+
+## 1.8.89 - 2020-2-13
+- Fix GetDataCorrectOrderDetail API return empty database information.
+
+
+## 1.8.88 - 2020-2-13
+- Init MQTT SDK .
+
+
+## 1.8.87 - 2020-2-12
+- Support to create, describe and expire demo access token.
+
+
+## 1.8.86 - 2020-2-12
+- Generated 2018-12-12, 2018-12-07 for `UniMkt`.
+
+
+## 1.8.85 - 2020-2-12
+- Update Full showStorageTyp.
+
+
+## 1.8.84 - 2020-2-12
+- Add Full showStorageTyp.
+
+
+## 1.8.83 - 2020-2-12
+- Support mau.
+
+
+## 1.8.82 - 2020-2-11
+- Return `VpcInstanceId ` for DescribeDBClusterEndpoints.
+- Add DescribeBackupLogs.
+
+
+## 1.8.81 - 2020-2-11
+- Support ModifyInstanceAttributes for SecurityGroupIds.
+
+
+## 1.8.80 - 2020-2-11
+- Add Thing Model APIs, including CreateThingModel, UpdateThingModel, etc.
+- Add OTA API ListOTATaskByJob.
+- Update OTA API ListOTAJobByFirmware.
+- Update Thing Core Model API InvokeThingsService.
+
+
+## 1.8.79 - 2020-2-10
+- Update default endpoints.
+
+
+## 1.8.78 - 2020-2-10
+- Supported address for GetMediaMeta.
+
+
+## 1.8.77 - 2020-2-9
+- Sdk version 104.
+
+
+## 1.8.76 - 2020-2-8
+- Add DetectMask Api.
+
+
+## 1.8.75 - 2020-2-7
+- Fix bug for DescribeZoneInfo, delete return result of reionId.
+- Fix bug for DeleteZone, parameter zoneId change to compulsory.
+- Fix bug for SetProxyPattern, parameter zoneId change to compulsory.
+
+
+## 1.8.74 - 2020-2-5
+- Supported GetOfficePreviewURL.
+- Supported RefreshOfficePreviewToken.
+
+
+## 1.8.73 - 2020-2-4
+- Update default endpoints.
+
+
+## 1.8.72 - 2020-1-20
+- Add Thing Model APIs, including QueryThingModel, PublishThingModel, etc.
+
+
+## 1.8.71 - 2020-1-20
+- Onezeroone sdk version.
+
+
+## 1.8.70 - 2020-1-20
+- Onezeroone sdk version.
+
+
+## 1.8.69 - 2020-1-20
+- Release on full language support.
+
+
+## 1.8.68 - 2020-1-17
+- Supported Add the history event signature function.
+
+
+## 1.8.67 - 2020-1-17
+- Supported AAA for BBB.
+- Fixed bugs for CCC.
+
+
+## 1.8.66 - 2020-1-16
+- Fix the result value of DeleteSiteMonitors.
+
+
+## 1.8.65 - 2020-1-16
+- Generated 2015-01-01 for `R-kvstore`.
+- Update DescribeAvailableResource.
+
+
+## 1.8.64 - 2020-1-16
+- Add fields faceComparisonScore for DescribeVerifyResult and VerifyMaterials interface.
+
+
+## 1.8.63 - 2020-1-15
+- Fix SignatureDoesNotMatch issue of GetOrderBaseInfo API.
+
+
+## 1.8.62 - 2020-1-15
+- Fix parameter issues for label synchronization group.
+
+
+## 1.8.61 - 2020-1-15
+- Fix parameter issues for label synchronization group.
+
+
+## 1.8.60 - 2020-1-14
+- Publish SDK For Java python, PHP.
+- Base on 2018-07-13.
+
+
+## 1.8.59 - 2020-1-14
+- Visionai online.
+
+
+## 1.8.58 - 2020-1-14
+- Visionai online.
+
+
+## 1.8.57 - 2020-1-13
+- New API DescribeAvailableResource.
+
+
+## 1.8.56 - 2020-1-13
+- Supported ondemand start transfer stream.
+
+
+## 1.8.55 - 2020-1-13
+- Add Dynamic Tag API.
+
+
+## 1.8.54 - 2020-1-13
+- Supported InstanceMaintenanceAtrributes for maintening the attributes of instances.
+- Deleted MaintenanceProperty.
+- Supported RedeployDedicatedHost for redeploying dedicated host in under-assessment status.
+
+
+## 1.8.53 - 2020-1-10
+- Return `ConsistentTime` for DescribeBackups.
+- Return `DBNodeIds` for CreateDBNodes.
+
+
+## 1.8.52 - 2020-1-9
+- Supported ondemand transfer stream.
+- Supported device position.
+
+
+## 1.8.51 - 2020-1-9
+- Support DAILY report in QueryInstanBill.
+
+
+## 1.8.50 - 2020-1-8
+- Add TagLevel to ListSetTags.
+
+
+## 1.8.49 - 2020-1-7
+- Modify desribeInstance return dict item.
+
+
+## 1.8.48 - 2020-1-7
+- Supported AAA for BBB.
+- Fixed bugs for CCC.
+
+
+## 1.8.47 - 2020-1-3
+- Add GWS serie apis.
+- Add QueryReport.
+- Fix ListJobs.
+- Etc.
+
+
+## 1.8.46 - 2020-1-3
+- New API DescribeAvailableResource.
+
+
+## 1.8.45 - 2020-1-3
+- ImmediateDelete.
+- DescribeInstance CreateTimeUTC ExpireTimeUTC.
+- DescribeInstances CreateTimeUTC ExpireTimeUTC.
+- DescribeIpWhitelist Groups GroupName.
+
+
+## 1.8.44 - 2019-12-31
+- Add OTA APIs, including GenerateOTAUploadURL, CreateOTAFirmware, etc.
+- Add UpdateProductFilterConfig interface, support setting product filter config.
+
+
+## 1.8.43 - 2019-12-31
+- Supported SQL SERVER support delete backup set according to time range.
+
+
+## 1.8.42 - 2019-12-31
+- Add CreateMarketCellSpace method.
+
+
+## 1.8.41 - 2019-12-31
+- Support asymmetric keys.
+
+
+## 1.8.40 - 2019-12-31
+- Add request parameter groupType for OnsGroupCreate.
+
+
+## 1.8.39 - 2019-12-31
+- Supported image for process.
+
+
+## 1.8.38 - 2019-12-31
+- Generated 2019-09-28 for `reid`.
+
+
+## 1.8.37 - 2019-12-31
+- Support DeleteDBCluster.
+- Support ModifyDBCluster.
+- Support DescribeAvailableResource.
+
+
+## 1.8.36 - 2019-12-30
+- Disable Base64 string data support.
+
+
+## 1.8.35 - 2019-12-30
+- Disable Base64 string data support.
+
+
+## 1.8.34 - 2019-12-30
+- Disable Base64 string data support.
+
+
+## 1.8.33 - 2019-12-30
+- Disable Base64 Image string data support.
+
+
+## 1.8.32 - 2019-12-30
+- Visionai online.
+
+
+## 1.8.31 - 2019-12-29
+- Add new api.
+
+
+## 1.8.30 - 2019-12-29
+- Add new api.
+
+
+## 1.8.29 - 2019-12-29
+- Add new api.
+
+
+## 1.8.28 - 2019-12-29
+- Add new api.
+
+
+## 1.8.27 - 2019-12-29
+- Add new api.
+
+
+## 1.8.26 - 2019-12-27
+- Support set accountType.
+
+
+## 1.8.25 - 2019-12-27
+- Support set accountType.
+
+
+## 1.8.24 - 2019-12-26
+- NlpAutoml add async api.
+
+
+## 1.8.23 - 2019-12-26
+- Modify CreateRestoreTask.
+
+
+## 1.8.22 - 2019-12-25
+- Support merchant sync item info.
+
+
+## 1.8.21 - 2019-12-25
+- Support merchant sync item info.
+
+
+## 1.8.20 - 2019-12-25
+- Support merchant sync item info.
+
+
+## 1.8.19 - 2019-12-24
+- Generated 2018-12-12, 2018-12-07 for `UniMkt`.
+
+
+## 1.8.18 - 2019-12-20
+- Support miniapp.
+- Support account type.
+
+
+## 1.8.17 - 2019-12-20
+- Supported Authorization API, includes GrantUserPermission, RevokeUserPermission, ListDatabaseUserPermssions, ListUserPermissions.
+- Supported Database or Table Metadata synchronization API, includes SyncInstanceMeta, SyncDatabaseMeta.
+- Supported Database or Table Owner set up API.
+- Supported GetUser API to get information of one DMS user.
+- Supported set Dingding mobile number with RegisterUser API.
+
+
+## 1.8.16 - 2019-12-20
+- Supported Search stream predict task list use modelId for IVISION.
+
+
+## 1.8.15 - 2019-12-20
+- Add result value for OnsConsumerStatus.
+
+
+## 1.8.14 - 2019-12-19
+- Add DescribeSlowLogRecords,DescribeSlowLogs for SlowLog.
+
+
+## 1.8.13 - 2019-12-19
+- Generated 2019-09-28 for `reid`.
+
+
+## 1.8.12 - 2019-12-19
+- DescribeNetworkInterfaces Supports NextToken.
+
+
+## 1.8.11 - 2019-12-18
+- Third sdk version.
+
+
+## 1.8.10 - 2019-12-18
+- Second sdk version.
+
+
+## 1.8.9 - 2019-12-18
+- Second sdk version.
+
+
+## 1.8.8 - 2019-12-18
+- Second sdk version.
+
+
+## 1.8.7 - 2019-12-18
+- First sdk version.
+
+
+## 1.8.6 - 2019-12-18
+- First sdk version.
+
+
+## 1.8.5 - 2019-12-18
+- First sdk version.
+
+
+## 1.8.4 - 2019-12-18
+- First sdk version.
+
+
+## 1.8.3 - 2019-12-18
+- First sdk version.
+
+
+## 1.8.2 - 2019-12-18
+- First sdk version.
+
+
+## 1.8.1 - 2019-12-18
+- First sdk version.
+
+
+## 1.7.197 - 2019-12-16
+- DescribeTransferDomains add query param, TargetUserId, FromUserId, DomainName.
+
+
+## 1.7.196 - 2019-12-14
+- Generated 2015-01-01 for `R-kvstore`.
+
+
+## 1.7.195 - 2019-12-14
+- Update DescribeAvailableResource.
+
+
+## 1.7.194 - 2019-12-14
+- Update DescribeAvailableResource.
+
+
+## 1.7.193 - 2019-12-11
+- Add api `BatchAddThingTopo`, support add multiple sub-devices for a gateway.
+- Add api `QueryDeviceByStatus`, support query device list by device status.
+- Support grouping products and rules.
+- Support using RAM to authorize resouces, including products, devices, rules, groups and instances, to RAM users.
+
+
+## 1.7.192 - 2019-12-11
+- Add tag API.
+- Add group process monitoring API.
+- Add API for batch setting alarm rules.
+
+
+## 1.7.191 - 2019-12-5
+- Add api QueryMetric.
+
+
+## 1.7.190 - 2019-12-4
+- Delete invalid Api.
+
+
+## 1.7.189 - 2019-12-4
+- Generated 2019-01-01 for `HBase`.
+
+
+## 1.7.188 - 2019-12-4
+- Supported ModifyDBInstanceSpec for Direction param.
+
+
+## 1.7.187 - 2019-12-4
+- Supported ModifyDBInstanceSpec for Direction param.
+
+
+## 1.7.186 - 2019-12-3
+- Supported face library operation.
+- Supported task template and words.
+
+
+## 1.7.185 - 2019-12-2
+- Remove QuerySmsProdStatus OpenAPI.
+
+
+## 1.7.184 - 2019-11-29
+- Add RenewInstance.
+- Add RenewLogstash.
+- Add UpdateInstanceChargeType.
+- Add UpdateLogstashChargeType.
+
+
+## 1.7.183 - 2019-11-28
+- Supported API GetTxtRecordForVerify.
+- Supported API RetrieveDomain.
+
+
+## 1.7.182 - 2019-11-28
+- Supported dash for compress.
+
+
+## 1.7.181 - 2019-11-28
+- Eni Supports Multi-SecurityGroup.
+
+
+## 1.7.180 - 2019-11-28
+- Support Order Basis API, include CreateOrder, CloseOrder, ListOrders, GetOrderBaseInfo.
+- Support Order Approval API, include SubmitOrderApproval, ApproveOrder, GetApprovalDetail.
+- Support DataCorrect Order Operation API, include ExecuteDataCorrect, GetDataCorrectOrderDetail, GetDataCorrectBackupFiles.
+- Support DDL Order Operation API, include CreatePublishGroupTask.
+- Support DataExport Operation API, include ExecuteDataExport, GetDataExportOrderDetail, GetDataExportDownloadURL.
+
+
+## 1.7.179 - 2019-11-27
+- CreateReplicationJob API supports the specified instance type.
+
+
+## 1.7.178 - 2019-11-26
+- Generated 2018-12-12, 2018-12-07 for `UniMkt`.
+
+
+## 1.7.177 - 2019-11-26
+- Modify QueryBill, add SubOrderId in item of response.
+
+
+## 1.7.176 - 2019-11-26
+- Supported API BindInstanceDomains.
+- Supported API UnbindInstanceDomains.
+- Supported API AddCustomLine.
+- Supported API UpdateCustomLine.
+- Supported API DeleteCustomLines.
+- Supported API DescribeCustomLine.
+- Supported API DescribeCustomLines.
+
+
+## 1.7.175 - 2019-11-25
+- One or more people can be subscribed when creating tasks.
+
+
+## 1.7.174 - 2019-11-22
+- Supported ondemand snapshot.
+
+
+## 1.7.173 - 2019-11-22
+- First version.
+
+
+## 1.7.172 - 2019-11-22
+- Update Api Request And Response structure.
+
+
+## 1.7.171 - 2019-11-21
+- Add ConvertPayType.
+- Add ConvertLogstashPayType.
+
+
+## 1.7.170 - 2019-11-20
+- Update Nlp Automl SDK.
+
+
+## 1.7.169 - 2019-11-20
+- Add new OpenAPI.
+
+
+## 1.7.168 - 2019-11-20
+- Add new pop api.
+
+
+## 1.7.167 - 2019-11-20
+- Supported ecsDemand CreateDemand, ModifyDemand, DeleteDemand API.
+- Modify ecsDemand DescribesDemands API.
+
+
+## 1.7.166 - 2019-11-20
+- Generated 2019-01-01 for `HBase`.
+
+
+## 1.7.165 - 2019-11-20
+- Support anonymous account for enableOrder.
+
+
+## 1.7.164 - 2019-11-20
+- Support anonymous account for enableOrder.
+
+
+## 1.7.163 - 2019-11-20
+- Add API ReportVoipProblems.
+- Add API QueryVoipNumberBindINfos.
+
+
+## 1.7.162 - 2019-11-19
+- Supported transcode template.
+
+
+## 1.7.161 - 2019-11-18
+- Add seller refuse reason for queryRefundDetail.
+
+
+## 1.7.160 - 2019-11-15
+- Nlp Automl SDK.
+
+
+## 1.7.159 - 2019-11-15
+- Init php sdk.
+
+
+## 1.7.158 - 2019-11-15
+- Sync cdn APIs.
+
+
+## 1.7.157 - 2019-11-15
+- Fixed bugs.
+
+
+## 1.7.156 - 2019-11-15
+- Sync cdn APIs.
+
+
+## 1.7.155 - 2019-11-15
+- Add Scdn APIS.
+- Sync cdn APIS.
+
+
+## 1.7.154 - 2019-11-15
+- Modify QueryAccountBill, support group by product.
+
+
+## 1.7.153 - 2019-11-15
+- Modify DescribeRestoreRangeInfo.
+
+
+## 1.7.152 - 2019-11-15
+- Add DescribeRestoreRangeInfo.
+
+
+## 1.7.151 - 2019-11-14
+- Released dysms OpenAPI.
+
+
+## 1.7.150 - 2019-11-14
+- Support Tag OpenAPI.
+- Fix endpoint problem.
+
+
+## 1.7.149 - 2019-11-13
+- Supported Stream analyse.
+
+
+## 1.7.148 - 2019-11-13
+- Fix ResourceId type from Long to String on QueryCostUnitResource.
+
+
+## 1.7.147 - 2019-11-13
+- Fix ResourceId type from Long to String on QueryCostUnitResource.
+
+
+## 1.7.146 - 2019-11-13
+- Add new API QueryBillToOSSSubscription.
+
+
+## 1.7.145 - 2019-11-13
+- Supported API UpdateDomainRemark for Update Domain Remark.
+- Supported API UpdateDomainRecordRemark for Update Record Remark.
+- Unsupported API CheckDomainRecord.
+
+
+## 1.7.144 - 2019-11-13
+- FindServiceList add RouteConfJson result.
+
+
+## 1.7.143 - 2019-11-13
+- Support Go SDK.
+- Support C SDK.
+- Support PHP SDK.
+
+
+## 1.7.142 - 2019-11-8
+- Add DescribeJobErrorCode.
+
+
+## 1.7.141 - 2019-11-5
+- Add OperateBlackNo.
+
+
+## 1.7.140 - 2019-11-2
+- Generated 2017-05-25 for `Dyvmsapi`.
+
+
+## 1.7.139 - 2019-11-1
+- Supported directory APIs.
+
+
+## 1.7.138 - 2019-10-31
+- Initial construction.
+- Public beta version.
+- Supported AliyunController for Interface.
+- Supported ConsoleController for Interface.
+- Supported AccountController for Interface.
+
+
+## 1.7.137 - 2019-10-31
+- Initial construction.
+- Public beta version.
+- Supported AliyunController for Interface.
+- Supported ConsoleController for Interface.
+- Supported AccountController for Interface.
+
+
+## 1.7.136 - 2019-10-30
+- Update interface params of the cloudauth.
+
+
+## 1.7.135 - 2019-10-30
+- Add features for open api.
+
+
+## 1.7.134 - 2019-10-29
+- Add a new Alibaba Cloud Bill API named QueryAccountBill.
+
+
+## 1.7.133 - 2019-10-25
+- Initial construction.
+- Public beta version.
+- Supported AliyunController for Interface.
+- Supported ConsoleController for Interface.
+- Supported AccountController for Interface.
+
+
+## 1.7.132 - 2019-10-25
+- Supported query push records.
+
+
+## 1.7.131 - 2019-10-25
+- Add DescribeDBClusterPerformance, DescribeDBNodePerformance for performance.
+
+
+## 1.7.130 - 2019-10-24
+- Generated 2017-12-14 for `BssOpenApi`.
+
+
+## 1.7.129 - 2019-10-23
+- Add a new api named SubmitDynamicImageJob capture a certain part of the video as a dynamic image.
+- Add a new api named SubmitWorkflowJob to initiate the VoD workflow processing for audio and video.
+- Add a new field AuditStatus in the structure ImageInfo to GetImageInfo api response, which is used to identify the audit status of the image.
+- Modify the data type of return field StorageLocation to String.
+- Add a new field named MediaType to SubmitAIMediaAuditJob api request.
+
+
+## 1.7.128 - 2019-10-23
+- Add a new api named SubmitDynamicImageJob capture a certain part of the video as a dynamic image.
+- Add a new api named SubmitWorkflowJob to initiate the VoD workflow processing for audio and video.
+- Add a new field AuditStatus in the structure ImageInfo to GetImageInfo api response, which is used to identify the audit status of the image.
+- Modify the data type of return field StorageLocation to String.
+- Add a new field named MediaType to SubmitAIMediaAuditJob api request.
+
+
+## 1.7.127 - 2019-10-23
+- Add a new api named SubmitDynamicImageJob capture a certain part of the video as a dynamic image.
+- Add a new api named SubmitWorkflowJob to initiate the VoD workflow processing for audio and video.
+- Add a new field AuditStatus in the structure ImageInfo to GetImageInfo api response, which is used to identify the audit status of the image.
+- Modify the data type of return field StorageLocation to String.
+- Add a new field named MediaType to SubmitAIMediaAuditJob api request.
+
+
+## 1.7.126 - 2019-10-22
+- Supported Sync predict for Image.
+- Supported Set Frame Frequency for Stream Predict.
+- Fixed Errore Code For APIs.
+
+
+## 1.7.125 - 2019-10-22
+- RunInstances support AutoSnapshotPolicyId.
+
+
+## 1.7.124 - 2019-10-22
+- Fix ListDatabases CatalogName dataType integer to string.
+- Remove GetLogicDatabase invalid output param named TotalCount.
+- Remove ListIndexes invalid output param named ColumnList.
+- Support SearchTable API to filter searchTarget.
+
+
+## 1.7.123 - 2019-10-22
+- Supported ExternalId IMM.
+
+
+## 1.7.122 - 2019-10-21
+- Release first version.
+
+
+## 1.7.121 - 2019-10-18
+- Generated 2019-09-10 for `DnsKnocker`.
+
+
+## 1.7.120 - 2019-10-18
+- Add X509 API, including queryDeviceCert, queryCertUrlByApplyId, createDeviceCert.
+- Add authType parameter of APIs, including createProduct, queryProduct, queryProductList, CreateProductPop, QueryProductAllInfo, QueryProductListPop, ListProductConsole, QueryAllProductListPop, QueryDeviceBatchList.
+
+
+## 1.7.119 - 2019-10-17
+- Support instance manage API, includes UpdateInstance and DeleteInstance.
+- Support user manage API, includes ListUsers and UpdateUser.
+- Support meta data information API, includes ListInstances, ListDatabases, ListLogicDatabases, ListTables, ListLogicTables, ListColumns, ListIndexes.
+- Support meta data search API, inclues SearchDatabase, SearcTable.
+- Support RegisterInstance API to set datalinkName and useDsql option.
+
+
+## 1.7.118 - 2019-10-16
+- Add ListTagResources OpenApi.
+- Add TagResources OpenApi.
+- Add UntagResources OpenApi.
+- Add ModifyDBInstanceAutoUpgradeMinorVersion OpenApi.
+
+
+## 1.7.117 - 2019-10-14
+- Supported callback for groups APIs.
+- Supported NVR historical stream for DescribeStreamURL.
+
+
+## 1.7.116 - 2019-10-14
+- Support continuous pushing.
+
+
+## 1.7.115 - 2019-10-12
+- Add new api.
+
+
+## 1.7.114 - 2019-10-9
+- Add VideoCancelScan Api.
+
+
+## 1.7.113 - 2019-10-9
+- Support API RecognizeImageColor.
+- Support API DetectImageElements.
+- Support API RecolorImage.
+- Support API SegmentImage.
+- Support API ChangeImageSize.
+- Support API ExtendImageStyle.
+- Support API RecognizeImageStyle.
+- Support API MakeSuperResolution.
+
+
+## 1.7.112 - 2019-10-8
+- Supported Grab Frame IMM.
+
+
+## 1.7.111 - 2019-10-8
+- Supported API MassPush for Push Message or Notice.
+
+
+## 1.7.110 - 2019-10-8
+- Generated 2016-01-20 for `Kms`.
+
+
+## 1.7.109 - 2019-9-26
+- Supported RingConfig for BindAxb,BindAxn,BindAxg,BindAxnExtension.
+- Add QuerySubsId.
+
+
+## 1.7.108 - 2019-9-25
+- Support anonymous account.
+
+
+## 1.7.107 - 2019-9-24
+- Generated 2019-08-10 for `multimediaai`.
+
+
+## 1.7.106 - 2019-9-24
+- Generated 2019-04-30 for `schedulerx2`.
+
+
+## 1.7.105 - 2019-9-23
+- Add param, DescribePrice supprot ReservedInstance.
+
+
+## 1.7.104 - 2019-9-19
+- Supported Video Abstract for IMM.
+
+
+## 1.7.103 - 2019-9-19
+- Supported Video Abstract for IMM.
+
+
+## 1.7.102 - 2019-9-19
+- Add bizSubCode and so on.
+
+
+## 1.7.101 - 2019-9-18
+- Supported Video Abstract for IMM.
+
+
+## 1.7.100 - 2019-9-18
+- Generated 2016-11-01 for `live`.
+
+
+## 1.7.99 - 2019-9-9
+- CreateInstance add toen.
+- UpdateInstance add toen.
+
+
+## 1.7.98 - 2019-9-6
+- Update endpoint data.
+
+
+## 1.7.97 - 2019-9-6
+- Generated 2016-04-28 for `Vpc`.
+
+
+## 1.7.96 - 2019-9-5
+- Supported for setEndpoint method.
+
+
+## 1.7.95 - 2019-9-5
+- Generated 2014-05-15 for `Slb`.
+
+
+## 1.7.94 - 2019-9-5
+- Generated 2018-11-11 for `foas`.
+
+
+## 1.7.93 - 2019-9-5
+- Generated 2019-05-24 for `cusanalytic_sc_online`.
+
+
+## 1.7.92 - 2019-9-5
+- Generated 2015-11-01 for `Market`.
+
+
+## 1.7.91 - 2019-9-5
+- Generated 2016-07-14 for `CloudAPI`.
+
+
+## 1.7.90 - 2019-9-5
+- Generated 2017-08-01 for `polardb`.
+
+
+## 1.7.89 - 2019-9-5
+- Generated 2017-12-14 for `BssOpenApi`.
+
+
+## 1.7.88 - 2019-9-3
+- Generated 2014-08-15 for `Rds`.
+
+
+## 1.7.87 - 2019-8-30
+- Revert to 2015-09-01.
+
+
+## 1.7.86 - 2019-8-30
+- Release Apis of Version 2019-09-10.
+
+
+## 1.7.85 - 2019-8-30
+- Supported Meida complex for IMM.
+
+
+## 1.7.84 - 2019-8-30
+- Add api for getTrace and searchTracelist.
+
+
+## 1.7.83 - 2019-8-29
+- Add PTZ APIs.
+
+
+## 1.7.82 - 2019-8-29
+- Move StopExecution params to body.
+
+
+## 1.7.81 - 2019-8-29
+- For publish.
+
+
+## 1.7.80 - 2019-8-28
+- Add DBS API UpgradeBackupPlan.
+- Add DBS API DescribePreCheckProgressList.
+
+
+## 1.7.79 - 2019-8-26
+- QueryInstanceBillResponse change ownerId type from Long to String.
+- QueryInstanceBillResponse change usage type from float to String.
+- QueryInstanceBillResponse change listPrice type from float to String.
+- QueryInstanceBillResponse change deductedByResourcePackage type from float to String.
+
+
+## 1.7.78 - 2019-8-22
+- Support API RecognizeImageColor.
+- Support API DetectImageElements.
+- Support API RecolorImage.
+- Support API SegmentImage.
+- Support API ChangeImageSize.
+- Support API ExtendImageStyle.
+- Support API RecognizeImageStyle.
+- Support API MakeSuperResolutionImage.
+
+
+## 1.7.77 - 2019-8-22
+- Api release 2019-08-08 public sdk 2-5-2 sdk release 20190822 shichun-fsc.
+
+
+## 1.7.76 - 2019-8-21
+- Move StartExecution params to body.
+
+
+## 1.7.75 - 2019-8-21
+- Return backup job id when create backup.
+- Return backup set size when describe backups.
+
+
+## 1.7.74 - 2019-8-20
+- API TaobaoFilmGetSchedules retrun col add hallId.
+
+
+## 1.7.73 - 2019-8-16
+- Add LinkIoTEdge API.
+
+
+## 1.7.72 - 2019-8-15
+- FnF public version.
+- Add Report task api.
+
+
+## 1.7.71 - 2019-8-15
+- Add API BatchStartCdnDomain, BatchStopCdnDomain, DescribeTagResources, DescribeUserTags, TagResources, UntagResources.
+
+
+## 1.7.70 - 2019-8-15
+- QueryInstanceBillResponse add ServicePeriod.
+
+
+## 1.7.69 - 2019-8-14
+- Expose the interface to the yundun-console.
+- Update interface definitions of the cloudauth.
+
+
+## 1.7.68 - 2019-8-13
+- Optimize return code.
+- Edit QueryDataset.
+
+
+## 1.7.67 - 2019-8-13
+- Supported for openapi new version.
+
+
+## 1.7.66 - 2019-8-12
+- Support Defect Face API.
+
+
+## 1.7.65 - 2019-8-9
+- Add a lot of new API.
+
+
+## 1.7.64 - 2019-8-8
+- Add CreateStorageSet api to support storageSet.
+- Add DeleteStorageSet api to support storageSet.
+- Add ModifyStorageSetAttribute api to support storageSet.
+- Add DescribeStorageSets api to support storageSet.
+- Add DescribeStorageSetDetails api to support storageSet.
+- Add parameter StorageSetId,StorageSetPartitionNumber to api CreateDisk,RunInstances,CreateInstance support storageSet.
+- Add StorageSetId,StorageSetPartitionNumber with response of api DescribeDisks.
+- Add DescribeNetworkInterfaces to support filter by PrivateIpAddress.
+
+
+## 1.7.63 - 2019-8-8
+- Group, Plugin support tag authentication.
+
+
+## 1.7.62 - 2019-8-7
+- Generated 2018-03-13 for `retailcloud`.
+
+
+## 1.7.61 - 2019-8-6
+- Supported GetMediaMeta for IMM.
+
+
+## 1.7.60 - 2019-8-6
+- Supported GetMediaMeta for IMM.
+
+
+## 1.7.59 - 2019-8-6
+- Supported GetMediaMeta for IMM.
+
+
+## 1.7.58 - 2019-8-6
+- Supported GetMediaMeta for IMM.
+
+
+## 1.7.57 - 2019-8-6
+- Supported GetMediaMeta for IMM.
+
+
+## 1.7.56 - 2019-8-5
+- GetOrderDetail add originalConfig param.
+
+
+## 1.7.55 - 2019-8-5
+- GetOrderDetail add originalConfig param.
+
+
+## 1.7.54 - 2019-8-5
+- Modify DBS API DescribeFullBackupList.
+
+
+## 1.7.53 - 2019-8-2
+- SubscribeBillToOSSRequest add multAccountRelSubscribe, bucketOwnerId.
+- UnsubscribeBillToOSSRequest add multAccountRelSubscribe.
+
+
+## 1.7.52 - 2019-7-31
+- Endpoint auto route.
+
+
+## 1.7.51 - 2019-7-30
+- Suport ImportCredentials api.
+
+
+## 1.7.50 - 2019-7-30
+- Suport ImportCredentials api.
+
+
+## 1.7.49 - 2019-7-29
+- Supported group API.
+- Supported device APIs.
+- Supported stream APIs.
+- Supported template APIs.
+- Supported record APIs.
+- Supported domain APIs.
+
+
+## 1.7.48 - 2019-7-26
+- Generated 2019-05-24 for `cusanalytic_sc_online`.
+
+
+## 1.7.47 - 2019-7-26
+- Generated 2019-05-24 for `cusanalytic_sc_online`.
+
+
+## 1.7.46 - 2019-7-25
+- Api createKey add optional parameter `ProtectionLevel`.
+- Api describeKey add a field `ProtectionLevel` in the response.
+- Add Api `DescribeService`.
+
+
+## 1.7.45 - 2019-7-25
+- App-related actions support tag authentication.
+
+
+## 1.7.44 - 2019-7-23
+- Supported CreationOption of CreateDBCluster with `CloneFromPolarDB `,`CloneFromRDS`,`MigrationFromRDS`.
+
+
+## 1.7.43 - 2019-7-19
+- QueryMonthlyBillResponse add roundDownDiscount.
+- QueryBillResponse add roundDownDiscount.
+- QueryInstanceBillResponse add item.
+
+
+## 1.7.42 - 2019-7-18
+- Generated 2016-06-07 for `cr`.
+
+
+## 1.7.41 - 2019-7-18
+- Add a new field named Input to SubmitAIJob api request to set the input file of AI job.
+- Change the field MediaId of SubmitAIJob api to non-mandatory.
+
+
+## 1.7.40 - 2019-7-17
+- Add a lot of new API.
+
+
+## 1.7.39 - 2019-7-14
+- Modify DBS API DescribeBackupPlanList.
+
+
+## 1.7.38 - 2019-7-12
+- Public api AddLivePullStreamInfoConfig.
+
+
+## 1.7.37 - 2019-7-11
+- Modify CreateBackupPlan.
+- Modify ConfigureBackupPlan.
+- Modify DescribeFullBackupList.
+- Modify DescribeRestoreTaskList.
+- Add ModifyBackupSourceEndpoint.
+- Add ModifyBackupStrategy.
+- Add ModifyBackupPlanName.
+
+
+## 1.7.36 - 2019-7-5
+- Supported library managment for simillarity scene.
+- Remove the local file uploader code which can be downloaded from yundun content security document.
+
+
+## 1.7.35 - 2019-7-5
+- Add TaskCancelStatus for QueryTaskList api.
+
+
+## 1.7.34 - 2019-7-4
+- Supported API DescribeRecordStatisticsy for Query Volume.
+- Supported API DescribeDomainStatistics for Query Volume.
+
+
+## 1.7.33 - 2019-7-4
+- Supported batch querying for device detail.
+
+
+## 1.7.32 - 2019-7-3
+- Supported API DescribeRecordStatisticsSummary for Query Volume.
+- Supported API DescribeDomainStatisticsSummary for Query Volume.
+- Supported API DescribeRecordStatisticsHistory for Query Volume.
+- Supported API DescribeDomainDnsStatistics for Query Volume.
+
+
+## 1.7.31 - 2019-7-2
+- FnF public version.
+
+
+## 1.7.30 - 2019-7-1
+- Support cloud_essd disk category for API CreateDisk, CreateInstance and RunInstances, and support configurating PerformanceLevel when choose cloud_essd.
+- Add ModifyDiskSpec API to support cloud_essd PerformanceLevel modification.
+- Add AutoProvisioningGroup interfaces, provide AutoProvisioningGroup function.
+- Add RetentionDays to snapshot creating.
+
+
+## 1.7.29 - 2019-6-27
+- Added setting of crop_mode parameter.
+
+
+## 1.7.28 - 2019-6-24
+- Add some new apis to manage VoD domain, such as AddVodDomain, UpdateVodDomain, DeleteVodDomain, BatchStartVodDomain, BatchStopVodDomain, DescribeVodUserDomains, DescribeVodDomainDetail.
+- Add some new apis to manage VoD domain config, such as BatchSetVodDomainConfigs, DescribeVodDomainConfigs, DeleteVodSpecificConfig, SetVodDomainCertificate, DescribeVodCertificateList, DescribeVodDomainCertificateInfo.
+- Add a new field named AppId to some apis supporting the VoD App feature, such as AddWorkFlow, GetWorkFlow, ListWorkFlow, AddVodTemplate, GetVodTemplate, ListVodTemplate, AddTranscodeTemplateGroup, GetTranscodeTemplateGroup, ListTranscodeTemplateGroup, AddWatermark, GetWatermark, ListWatermark, UploadMediaByURL.
+- Add a new field named UserData to SubmitTranscodeJobs api request to support user-defined extension fields, which can be used for transparent return when callbacks.
+
+
+## 1.7.27 - 2019-6-24
+- Add some new apis to manage VoD domain, such as AddVodDomain, UpdateVodDomain, DeleteVodDomain, BatchStartVodDomain, BatchStopVodDomain, DescribeVodUserDomains, DescribeVodDomainDetail.
+- Add some new apis to manage VoD domain config, such as BatchSetVodDomainConfigs, DescribeVodDomainConfigs, DeleteVodSpecificConfig, SetVodDomainCertificate, DescribeVodCertificateList, DescribeVodDomainCertificateInfo.
+- Add a new field named AppId to some apis supporting the VoD App feature, such as AddWorkFlow, GetWorkFlow, ListWorkFlow, AddVodTemplate, GetVodTemplate, ListVodTemplate, AddTranscodeTemplateGroup, GetTranscodeTemplateGroup, ListTranscodeTemplateGroup, AddWatermark, GetWatermark, ListWatermark, UploadMediaByURL.
+- Add a new field named UserData to SubmitTranscodeJobs api request to support user-defined extension fields, which can be used for transparent return when callbacks.
+
+
+## 1.7.26 - 2019-6-19
+- Removed 2018-12-01 for `cr`.
+
+
+## 1.7.25 - 2019-6-19
+- Generated 2018-12-01 for `cr`.
+
+
+## 1.7.24 - 2019-6-19
+1, Add DefaultPolicyVersion as return field to GetPolicy interface, Facilitating to get policy document from this interface.
+2, Add RotateStrategy as input field to CreatePolicyVersion interface for rotating policy version when reaching policy version limit.
+
+
+## 1.7.23 - 2019-6-18
+- Supported the related recommend.
+- Supported exposure time controll and exposure filter by scene.
+
+
+## 1.7.22 - 2019-6-17
+- Companyreg release.
+
+
+## 1.7.21 - 2019-6-13
+- Fixed DescribeAvailableResource OpenApi AvailableZones value problem.
+
+
+## 1.7.20 - 2019-6-13
+- Generated 2015-01-01 for `R-kvstore`.
+
+
+## 1.7.19 - 2019-6-13
+- Added Network Assistant openapi SDK.
+
+
+## 1.7.18 - 2019-6-13
+- Added DescribeAvailableResource OpenApi.
+- Upgrade version to 2.3.8
+
+
+## 1.7.17 - 2019-6-12
+- Added RenewBackupPlan DBS interface.
+
+
+## 1.7.16 - 2019-6-12
+- Fixed bug.
+
+
+## 1.7.15 - 2019-6-12
+- Generated 2018-12-01 for `cr`.
+
+
+## 1.7.14 - 2019-6-12
+- Added InvokeDataAPIService interface, support invoke service of data api to get sql query result.
+- Added GetDataAPIServiceDetail interface, support get data api's detail information.
+- Added CreateDataAPIService interface, support create data api with sql statement.
+
+
+## 1.7.13 - 2019-6-12
+- Removed `2015-05-06`,`2018-12-01` for `Cr`.
+
+
+## 1.7.12 - 2019-6-12
+- Generated 2019-03-06 for `Dbs`.
+
+
+## 1.7.11 - 2019-6-11
+- Generated 2015-05-06, 2016-06-07, 2018-12-01 for `cr`.
+
+
+## 1.7.10 - 2019-6-10
+- Generated 2015-05-06, 2016-06-07, 2018-12-01 for `cr`.
+
+
+## 1.7.9 - 2019-6-3
+- Generated 2018-01-12 for `afs`.
+
+
+## 1.7.8 - 2019-6-3
+- Generated 2018-05-24 for `welfare-inner`.
+
+
+## 1.7.7 - 2019-6-2
+- Generated 2015-05-06, 2016-06-07, 2018-12-01 for `cr`.
+
+
+## 1.7.6 - 2019-5-31
+- Generated 2016-11-11, 2015-06-30 for `BatchCompute`.
+
+
+## 1.7.5 - 2019-5-30
+- Generated 2013-01-11, 2016-11-11 for `BatchCompute`.
+
+
+## 1.7.4 - 2019-5-30
+- Generated 2019-05-21 for `saf`.
+
+
+## 1.7.3 - 2019-5-30
+- Generated 2015-12-15, 2018-04-18 for `CS`.
+
+
+## 1.7.2 - 2019-5-30
+- Generated 2014-02-14, 2015-05-01, 2018-03-02 for `Ram`.
+
+
+## 1.7.1 - 2019-5-30
+- Generated 2015-05-06, 2016-06-07, 2018-12-01 for `cr`.
+
+
+## 1.7.0 - 2019-5-29
+- Supported `replace`. 
+
+
+## 1.6.8 - 2019-5-29
+- Update Smartag.
+
+
+## 1.6.7 - 2019-5-29
+- Update product.
+
+
+## 1.6.6 - 2019-5-29
+- Generated 2015-05-06, 2016-06-07, 2018-12-01 for `cr`.
+
+
+## 1.6.5 - 2019-5-29
+- Generated 2015-05-06 for `cr`.
+
+
+## 1.6.4 - 2019-05-27
+- Improved Docs.
+- Updated APIs.
+
+
+## 1.6.3 - 2019-05-20
+- Updated APIs.
+
+
+## 1.6.2 - 2019-05-16
+- Updated APIs.
+
+
+## 1.6.1 - 2019-05-09
+- Regenerate products.
+- Generate `composer.json` for each product.
+
+
+## 1.6.0 - 2019-05-07
+- Changed `Resolver` file name.
+
+
+## 1.5.1 - 2019-04-19
+- Supported `Sas`, `Ivision`.
+- Added tests for `Sas`, `Ivision`.
+
+
+## 1.5.0 - 2019-04-18
+- Improved parameters methods.
+- Optimized the logic for body encode.
+
+
+## 1.4.0 - 2019-04-11
+- Added `2019-03-25` for `ImageSearch`.
+
+
+## 1.3.5 - 2019-04-09
+- Support `Kms`.
+
+
+## 1.3.4 - 2019-04-09
+- Fixed `MNS`.
+
+
+## 1.3.3 - 2019-04-08
+- Added Apis for `Dbs`.
+
+
+## 1.3.2 - 2019-04-08
+- Support `Dypnsapi`.
+
+
+## 1.3.1 - 2019-04-02
+- Remove `finmall`.
+
+
+## 1.3.0 - 2019-04-01
+- Updated `composer.json`.
+
+
+## 1.2.10 - 2019-03-27
+- Improve `Resolver`.
+
+
+## 1.2.9 - 2019-03-27
+- Support `Dbs`.
+- Support `AliProbe`.
+- Fixed `BatchReceiveMessage`.
+
+
+## 1.2.8 - 2019-03-25
+- Updated README.md.
+- Updated Apis.
+
+
+## 1.2.7 - 2019-03-24
+- Append `SDK` for User-Agent.
+
+
+## 1.2.6 - 2019-03-24
+- Update APIs.
+
+
+## 1.2.5 - 2019-03-23
+- Remove SVG.
+
+
+## 1.2.4 - 2019-03-19
+- Support `alikafka`.
+- Support `bss`.
+- Support `cds`.
+- Support `cf`.
+- Support `Commondriver`.
+- Support `dataworks-public`.
+- Support `drcloud`.
+- Support `Edas`.
+- Support `Foas`.
+- Support `HPC`.
+- Support `ITaaS`.
+- Support `jarvis-public`.
+- Support `LinkWAN`.
+- Support `Lubanruler`.
+- Support `Oms`.
+- Support `PTS`.
+- Support `Qualitycheck`.
+- Support `waf-openapi`.
+
+
+## 1.2.3 - 2019-03-19
+- Support `cloudwf`.
+- Update APIs for `Aegis`.
+- Update APIs for `cdn`.
+- Update APIs for `dcdn`.
+- Update APIs for `imm`.
+- Update APIs for `live`.
+- Update APIs for `NAS`.
+
+
+## 1.2.2 - 2019-03-19
+- Update docs.
+
+
+## 1.2.1 - 2019-03-17
+- Add `Supported.md`.
+- Support `ProductCatalog`.
+- Support `polardb`.
+- Support `cloudmarketing`.
+- Support `Aas`.
+- Support `Ft`.
+- Support `gpdb`.
+- Support `OssAdmin`.
+- Support `PetaData`.
+
+
+## 1.2.0 - 2019-03-16
+- Redesign the request class to reduce the code size.
+- Support `Yundun`.
+- Support `Actiontrail`.
+- Support `industry-brain`.
+- Support `welfare-inner`.
+- Support `xspace`.
+- Support `ROS`.
+- Support `openanalytics`.
+- Support `Cbn`.
+- Support `cr`.
+- Support `MoPen`.
+- Support `Snsuapi`.
+- Support `finmall`.
+- Support `Emr`.
+
+## 1.1.2 - 2019-03-15
+- Add `Iot` Tests.
+- Add `Aegis` Apis.
+
+
+## 1.1.1 - 2019-03-14
+- Add `DescribeWhiteListStrategyList` for `Aegis`.
+- Add `DescribeAvailableCrossRegion` for `Rds`.
+- Add `DescribeAvailableRecoveryTime` for `Rds`.
+- Add `DescribeCrossRegionBackupDBInstance` for `Rds`.
+- Update Apis for `Aegis`.
+- Update Apis for `BssOpenApi`.
+- Update Apis for `Green`.
+
+
+## 1.1.0 - 2019-03-14
+- IDE auto-prompt for unlabeling discarded methods.
+- Reduce size.
+- Added support for 127 Api.
+- Functional testing increased from 28 to 35.
+
+
+## 1.0.10 - 2019-03-13
+- Update Docs.
+
+
+## 1.0.9 - 2019-03-07
+- Optimize api analysis.
+
+
+## 1.0.8 - 2019-02-22
+- 238 interfaces added to support 29 products.
+
+
+## 1.0.7 - 2019-02-21
+- Add APIs for `VOD`.
+
+
+## 1.0.6 - 2019-02-12
+- Support Image Search.
+
+
+## 1.0.5 - 2019-01-23
+- `AlibabaCloud\Dybaseapi\MNS` - Support MNS with Feature test.
+- Update readme.
+- Update bootstrap for test.
+
+
+## 1.0.4 - 2019-01-15
+- Improve Test.
+- Improve Resolver.
+
+
+## 1.0.3 - 2019-01-11
+- `AlibabaCloud\CloudAPI` - Support CloudAPI.
+
+
+## 1.0.2 - 2019-01-11
+- Support test on the Windows.
+
+
+## 1.0.1 - 2019-01-09
+- `AlibabaCloud\NlsFiletrans` - Support NLS Filetrans.
+- `AlibabaCloud\NlsCloudMeta` - Support NLS Cloud Meta.
+
+## 1.0.0 - 2019-01-07
+- Initial release of the Alibaba Cloud SDK for PHP Version 1.0.0 on Packagist See <https://github.com/aliyun/openapi-sdk-php> for more information.

+ 31 - 0
vendor/alibabacloud/sdk/CONTRIBUTING.md

xqd
@@ -0,0 +1,31 @@
+# Contributing to the Alibaba Cloud SDK for PHP
+
+We work hard to provide a high-quality and useful SDK for Alibaba Cloud, and
+we greatly value feedback and contributions from our community. Please submit
+your [issues][issues] or [pull requests][pull-requests] through GitHub.
+
+## Tips
+
+- The SDK is released under the [Apache license][license]. Any code you submit
+   will be released under that license. For substantial contributions, we may
+   ask you to sign a [Alibaba Documentation Corporate Contributor License 
+   Agreement (CLA)][cla].
+- We follow all of the relevant PSR recommendations from the [PHP Framework
+   Interop Group][php-fig]. Please submit code that follows these standards.
+   The [PHP CS Fixer][cs-fixer] tool can be helpful for formatting your code.
+   Your can use `composer fixer` to fix code.
+- We maintain a high percentage of code coverage in our unit tests. If you make
+   changes to the code, please add, update, and/or remove tests as appropriate.
+- If your code does not conform to the PSR standards, does not include adequate
+   tests, or does not contain a changelog document, we may ask you to update
+   your pull requests before we accept them. We also reserve the right to deny
+   any pull requests that do not align with our standards or goals.
+
+
+[issues]: https://github.com/aliyun/openapi-sdk-php/issues
+[pull-requests]: https://github.com/aliyun/openapi-sdk-php/pulls
+[license]: http://www.apache.org/licenses/LICENSE-2.0
+[cla]: https://alibaba-cla-2018.oss-cn-beijing.aliyuncs.com/Alibaba_Documentation_Open_Source_Corporate_CLA.pdf
+[php-fig]: http://php-fig.org
+[cs-fixer]: http://cs.sensiolabs.org/
+[docs-readme]: https://github.com/aliyun/openapi-sdk-php/blob/master/README.md

+ 13 - 0
vendor/alibabacloud/sdk/LICENSE.md

xqd
@@ -0,0 +1,13 @@
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.

+ 88 - 0
vendor/alibabacloud/sdk/NOTICE.md

xqd
@@ -0,0 +1,88 @@
+# Alibaba Cloud SDK for PHP
+
+<https://www.alibabacloud.com/>
+
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License").
+You may not use this file except in compliance with the License.
+A copy of the License is located at
+
+<http://www.apache.org/licenses/LICENSE-2.0>
+
+or in the "license" file accompanying this file. This file is distributed
+on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+express or implied. See the License for the specific language governing
+permissions and limitations under the License.
+
+# Guzzle
+
+<https://github.com/guzzle/guzzle>
+
+Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
+
+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.
+
+# jmespath.php
+
+<https://github.com/mtdowling/jmespath.php>
+
+Copyright (c) 2014 Michael Dowling, https://github.com/mtdowling
+
+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.
+
+# Dot
+
+<https://github.com/adbario/php-dot-notation>
+
+Copyright (c) 2016-2019 Riku Särkinen
+
+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 نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است