Merge branch '3.4' into 4.4

* 3.4:
  [Validator] Add missing translations of nn locale
  [HttpKernel] Fix that the `Store` would not save responses with the X-Content-Digest header present
  [Intl] bump icu 67.1
This commit is contained in:
Nicolas Grekas 2020-05-19 18:54:45 +02:00
commit 2c57ae2b97
1070 changed files with 4468 additions and 1290 deletions

View File

@ -175,19 +175,15 @@ class Store implements StoreInterface
$key = $this->getCacheKey($request); $key = $this->getCacheKey($request);
$storedEnv = $this->persistRequest($request); $storedEnv = $this->persistRequest($request);
// write the response body to the entity store if this is the original response $digest = $this->generateContentDigest($response);
if (!$response->headers->has('X-Content-Digest')) { $response->headers->set('X-Content-Digest', $digest);
$digest = $this->generateContentDigest($response);
if (!$this->save($digest, $response->getContent())) { if (!$this->save($digest, $response->getContent(), false)) {
throw new \RuntimeException('Unable to store the entity.'); throw new \RuntimeException('Unable to store the entity.');
} }
$response->headers->set('X-Content-Digest', $digest); if (!$response->headers->has('Transfer-Encoding')) {
$response->headers->set('Content-Length', \strlen($response->getContent()));
if (!$response->headers->has('Transfer-Encoding')) {
$response->headers->set('Content-Length', \strlen($response->getContent()));
}
} }
// read existing cache entries, remove non-varying, and add this one to the list // read existing cache entries, remove non-varying, and add this one to the list
@ -346,10 +342,14 @@ class Store implements StoreInterface
/** /**
* Save data for the given key. * Save data for the given key.
*/ */
private function save(string $key, string $data): bool private function save(string $key, string $data, bool $overwrite = true): bool
{ {
$path = $this->getPath($key); $path = $this->getPath($key);
if (!$overwrite && file_exists($path)) {
return true;
}
if (isset($this->locks[$key])) { if (isset($this->locks[$key])) {
$fp = $this->locks[$key]; $fp = $this->locks[$key];
@ftruncate($fp, 0); @ftruncate($fp, 0);

View File

@ -97,6 +97,27 @@ class StoreTest extends TestCase
$this->assertEquals('en9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', $res['x-content-digest'][0]); $this->assertEquals('en9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', $res['x-content-digest'][0]);
} }
public function testDoesNotTrustXContentDigestFromUpstream()
{
$response = new Response('test', 200, ['X-Content-Digest' => 'untrusted-from-elsewhere']);
$cacheKey = $this->store->write($this->request, $response);
$entries = $this->getStoreMetadata($cacheKey);
list(, $res) = $entries[0];
$this->assertEquals('en9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', $res['x-content-digest'][0]);
$this->assertEquals('en9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', $response->headers->get('X-Content-Digest'));
}
public function testWritesResponseEvenIfXContentDigestIsPresent()
{
// Prime the store
$this->store->write($this->request, new Response('test', 200, ['X-Content-Digest' => 'untrusted-from-elsewhere']));
$response = $this->store->lookup($this->request);
$this->assertNotNull($response);
}
public function testFindsAStoredEntryWithLookup() public function testFindsAStoredEntryWithLookup()
{ {
$this->storeSimpleEntry(); $this->storeSimpleEntry();

View File

@ -82,7 +82,6 @@ class CurrencyDataGenerator extends AbstractDataGenerator
if (isset($localeBundle['Currencies']) && null !== $localeBundle['Currencies']) { if (isset($localeBundle['Currencies']) && null !== $localeBundle['Currencies']) {
$data = [ $data = [
'Version' => $localeBundle['Version'],
'Names' => $this->generateSymbolNamePairs($localeBundle), 'Names' => $this->generateSymbolNamePairs($localeBundle),
]; ];
@ -102,7 +101,6 @@ class CurrencyDataGenerator extends AbstractDataGenerator
$rootBundle = $reader->read($tempDir, 'root'); $rootBundle = $reader->read($tempDir, 'root');
return [ return [
'Version' => $rootBundle['Version'],
'Names' => $this->generateSymbolNamePairs($rootBundle), 'Names' => $this->generateSymbolNamePairs($rootBundle),
]; ];
} }
@ -112,7 +110,6 @@ class CurrencyDataGenerator extends AbstractDataGenerator
*/ */
protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array
{ {
$rootBundle = $reader->read($tempDir, 'root');
$supplementalDataBundle = $reader->read($tempDir, 'supplementalData'); $supplementalDataBundle = $reader->read($tempDir, 'supplementalData');
$numericCodesBundle = $reader->read($tempDir, 'currencyNumericCodes'); $numericCodesBundle = $reader->read($tempDir, 'currencyNumericCodes');
@ -121,7 +118,6 @@ class CurrencyDataGenerator extends AbstractDataGenerator
sort($this->currencyCodes); sort($this->currencyCodes);
$data = [ $data = [
'Version' => $rootBundle['Version'],
'Currencies' => $this->currencyCodes, 'Currencies' => $this->currencyCodes,
'Meta' => $this->generateCurrencyMeta($supplementalDataBundle), 'Meta' => $this->generateCurrencyMeta($supplementalDataBundle),
'Alpha3ToNumeric' => $this->generateAlpha3ToNumericMapping($numericCodesBundle, $this->currencyCodes), 'Alpha3ToNumeric' => $this->generateAlpha3ToNumericMapping($numericCodesBundle, $this->currencyCodes),

View File

@ -143,7 +143,6 @@ class LanguageDataGenerator extends AbstractDataGenerator
} }
} }
$data = [ $data = [
'Version' => $localeBundle['Version'],
'Names' => $names, 'Names' => $names,
'LocalizedNames' => $localizedNames, 'LocalizedNames' => $localizedNames,
]; ];
@ -167,7 +166,6 @@ class LanguageDataGenerator extends AbstractDataGenerator
*/ */
protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array
{ {
$rootBundle = $reader->read($tempDir, 'root');
$metadataBundle = $reader->read($tempDir, 'metadata'); $metadataBundle = $reader->read($tempDir, 'metadata');
$this->languageCodes = array_unique($this->languageCodes); $this->languageCodes = array_unique($this->languageCodes);
@ -175,7 +173,6 @@ class LanguageDataGenerator extends AbstractDataGenerator
sort($this->languageCodes); sort($this->languageCodes);
return [ return [
'Version' => $rootBundle['Version'],
'Languages' => $this->languageCodes, 'Languages' => $this->languageCodes,
'Alpha3Languages' => $this->generateAlpha3Codes($this->languageCodes, $metadataBundle), 'Alpha3Languages' => $this->generateAlpha3Codes($this->languageCodes, $metadataBundle),
'Alpha2ToAlpha3' => $this->generateAlpha2ToAlpha3Mapping($metadataBundle), 'Alpha2ToAlpha3' => $this->generateAlpha2ToAlpha3Mapping($metadataBundle),

View File

@ -116,7 +116,6 @@ class RegionDataGenerator extends AbstractDataGenerator
// isset() on \ResourceBundle returns true even if the value is null // isset() on \ResourceBundle returns true even if the value is null
if (isset($localeBundle['Countries']) && null !== $localeBundle['Countries']) { if (isset($localeBundle['Countries']) && null !== $localeBundle['Countries']) {
$data = [ $data = [
'Version' => $localeBundle['Version'],
'Names' => $this->generateRegionNames($localeBundle), 'Names' => $this->generateRegionNames($localeBundle),
]; ];
@ -141,7 +140,6 @@ class RegionDataGenerator extends AbstractDataGenerator
*/ */
protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array
{ {
$rootBundle = $reader->read($tempDir, 'root');
$metadataBundle = $reader->read($tempDir, 'metadata'); $metadataBundle = $reader->read($tempDir, 'metadata');
$this->regionCodes = array_unique($this->regionCodes); $this->regionCodes = array_unique($this->regionCodes);
@ -153,7 +151,6 @@ class RegionDataGenerator extends AbstractDataGenerator
asort($alpha3ToAlpha2); asort($alpha3ToAlpha2);
return [ return [
'Version' => $rootBundle['Version'],
'Regions' => $this->regionCodes, 'Regions' => $this->regionCodes,
'Alpha2ToAlpha3' => $alpha2ToAlpha3, 'Alpha2ToAlpha3' => $alpha2ToAlpha3,
'Alpha3ToAlpha2' => $alpha3ToAlpha2, 'Alpha3ToAlpha2' => $alpha3ToAlpha2,

View File

@ -69,7 +69,6 @@ class ScriptDataGenerator extends AbstractDataGenerator
// isset() on \ResourceBundle returns true even if the value is null // isset() on \ResourceBundle returns true even if the value is null
if (isset($localeBundle['Scripts']) && null !== $localeBundle['Scripts']) { if (isset($localeBundle['Scripts']) && null !== $localeBundle['Scripts']) {
$data = [ $data = [
'Version' => $localeBundle['Version'],
'Names' => array_diff_key(iterator_to_array($localeBundle['Scripts']), self::$blacklist), 'Names' => array_diff_key(iterator_to_array($localeBundle['Scripts']), self::$blacklist),
]; ];
@ -94,14 +93,11 @@ class ScriptDataGenerator extends AbstractDataGenerator
*/ */
protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array
{ {
$rootBundle = $reader->read($tempDir, 'root');
$this->scriptCodes = array_unique($this->scriptCodes); $this->scriptCodes = array_unique($this->scriptCodes);
sort($this->scriptCodes); sort($this->scriptCodes);
return [ return [
'Version' => $rootBundle['Version'],
'Scripts' => $this->scriptCodes, 'Scripts' => $this->scriptCodes,
]; ];
} }

View File

@ -94,7 +94,6 @@ class TimezoneDataGenerator extends AbstractDataGenerator
} }
$data = [ $data = [
'Version' => $localeBundle['Version'],
'Names' => $this->generateZones($reader, $tempDir, $displayLocale), 'Names' => $this->generateZones($reader, $tempDir, $displayLocale),
'Meta' => self::generateZoneMetadata($localeBundle), 'Meta' => self::generateZoneMetadata($localeBundle),
]; ];
@ -131,7 +130,6 @@ class TimezoneDataGenerator extends AbstractDataGenerator
$rootBundle = $reader->read($tempDir, 'root'); $rootBundle = $reader->read($tempDir, 'root');
return [ return [
'Version' => $rootBundle['Version'],
'Meta' => self::generateZoneMetadata($rootBundle), 'Meta' => self::generateZoneMetadata($rootBundle),
]; ];
} }
@ -149,7 +147,6 @@ class TimezoneDataGenerator extends AbstractDataGenerator
ksort($this->zoneToCountryMapping); ksort($this->zoneToCountryMapping);
$data = [ $data = [
'Version' => $rootBundle['Version'],
'Zones' => $this->zoneIds, 'Zones' => $this->zoneIds,
'ZoneToCountry' => $this->zoneToCountryMapping, 'ZoneToCountry' => $this->zoneToCountryMapping,
'CountryToZone' => self::generateCountryToZoneMapping($this->zoneToCountryMapping), 'CountryToZone' => self::generateCountryToZoneMapping($this->zoneToCountryMapping),

View File

@ -256,7 +256,7 @@ final class Intl
*/ */
public static function getIcuStubVersion(): string public static function getIcuStubVersion(): string
{ {
return '66.1'; return '67.1';
} }
/** /**

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AED": [ "AED": [
"AED", "AED",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"NAD": [ "NAD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AED": [ "AED": [
"AED", "AED",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AED": [ "AED": [
"AED", "AED",
@ -239,7 +238,7 @@
], ],
"HRK": [ "HRK": [
"HRK", "HRK",
"HRK" "የክሮሽያ ኩና"
], ],
"HTG": [ "HTG": [
"HTG", "HTG",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"DJF": [ "DJF": [
"Fdj", "Fdj",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ERN": [ "ERN": [
"Nfk", "Nfk",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"KMF": [ "KMF": [
"CF", "CF",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"SDG": [ "SDG": [
"SDG", "SDG",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"SOS": [ "SOS": [
"S", "S",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"GBP": [ "GBP": [
"GB£", "GB£",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AED": [ "AED": [
"AED", "AED",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AZN": [ "AZN": [
"₼", "₼",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AED": [ "AED": [
"AED", "AED",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AED": [ "AED": [
"AED", "AED",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"CNY": [ "CNY": [
"¥", "¥",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"CNY": [ "CNY": [
"CN¥", "CN¥",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"FRF": [ "FRF": [
"F", "F",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AED": [ "AED": [
"AED", "AED",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AED": [ "AED": [
"AED", "AED",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"BYN": [ "BYN": [
"BYN", "BYN",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"EUR": [ "EUR": [
"EUR", "EUR",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"LUF": [ "LUF": [
"F", "F",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AED": [ "AED": [
"AED", "AED",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ADP": [ "ADP": [
"ADP", "ADP",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"BYB": [ "BYB": [
"BYB", "BYB",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"EUR": [ "EUR": [
"€", "€",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AED": [ "AED": [
"AED", "AED",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"XCD": [ "XCD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"XCD": [ "XCD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AED": [ "AED": [
"AED", "AED",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"BBD": [ "BBD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"BIF": [ "BIF": [
"FBu", "FBu",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"BMD": [ "BMD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"BSD": [ "BSD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"BWP": [ "BWP": [
"P", "P",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"BZD": [ "BZD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"CAD": [ "CAD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AUD": [ "AUD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"NZD": [ "NZD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AUD": [ "AUD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"DKK": [ "DKK": [
"kr.", "kr.",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"XCD": [ "XCD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ERN": [ "ERN": [
"Nfk", "Nfk",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"FJD": [ "FJD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"FKP": [ "FKP": [
"£", "£",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"XCD": [ "XCD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"GBP": [ "GBP": [
"£", "£",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"GHS": [ "GHS": [
"GH₵", "GH₵",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"GBP": [ "GBP": [
"GB£", "GB£",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"GMD": [ "GMD": [
"D", "D",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"GYD": [ "GYD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"GBP": [ "GBP": [
"£", "£",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"VEF": [ "VEF": [
"VEF", "VEF",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"GBP": [ "GBP": [
"£", "£",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"JMD": [ "JMD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"KES": [ "KES": [
"Ksh", "Ksh",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AUD": [ "AUD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"XCD": [ "XCD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"KYD": [ "KYD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"XCD": [ "XCD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"LRD": [ "LRD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"ZAR": [ "ZAR": [
"R", "R",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"MGA": [ "MGA": [
"Ar", "Ar",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"MOP": [ "MOP": [
"MOP$", "MOP$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"XCD": [ "XCD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"GBP": [ "GBP": [
"GB£", "GB£",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"MUR": [ "MUR": [
"Rs", "Rs",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"MWK": [ "MWK": [
"MK", "MK",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"MYR": [ "MYR": [
"RM", "RM",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"NAD": [ "NAD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AUD": [ "AUD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"NGN": [ "NGN": [
"₦", "₦",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"VUV": [ "VUV": [
"VT", "VT",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"AUD": [ "AUD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"NZD": [ "NZD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"NZD": [ "NZD": [
"$", "$",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"PGK": [ "PGK": [
"K", "K",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"PHP": [ "PHP": [
"₱", "₱",

View File

@ -1,5 +1,4 @@
{ {
"Version": "36.1",
"Names": { "Names": {
"PKR": [ "PKR": [
"Rs", "Rs",

Some files were not shown because too many files have changed in this diff Show More