Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package aws-c-s3 for openSUSE:Factory checked in at 2025-07-02 18:17:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/aws-c-s3 (Old) and /work/SRC/openSUSE:Factory/.aws-c-s3.new.7067 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-s3" Wed Jul 2 18:17:24 2025 rev:25 rq:1289936 version:0.8.3 Changes: -------- --- /work/SRC/openSUSE:Factory/aws-c-s3/aws-c-s3.changes 2025-06-13 18:47:23.819619262 +0200 +++ /work/SRC/openSUSE:Factory/.aws-c-s3.new.7067/aws-c-s3.changes 2025-07-02 18:17:57.280524425 +0200 @@ -1,0 +2,12 @@ +Wed Jul 2 07:20:01 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaub...@suse.com> + +- Update to version 0.8.3 + * Add user data to pool factory by @DmitriyMusatkin in (#529) +- from version 0.8.2 + * Remove Windows 2019 and add Windows 2025 with MSVC-17 + by @TingDaoK in (#524) + * Auto - Update S3 Ruleset & Partition by @TingDaoK in (#527) + * Fix issue with error response parting potentially overriding + upload buffer by @DmitriyMusatkin in (#528) + +------------------------------------------------------------------- Old: ---- v0.8.1.tar.gz New: ---- v0.8.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ aws-c-s3.spec ++++++ --- /var/tmp/diff_new_pack.93AXam/_old 2025-07-02 18:17:58.004554507 +0200 +++ /var/tmp/diff_new_pack.93AXam/_new 2025-07-02 18:17:58.008554674 +0200 @@ -19,7 +19,7 @@ %define library_version 1.0.0 %define library_soversion 0unstable Name: aws-c-s3 -Version: 0.8.1 +Version: 0.8.3 Release: 0 Summary: AWS Cross-Platform, C99 wrapper for cryptography primitives License: Apache-2.0 ++++++ v0.8.1.tar.gz -> v0.8.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-s3-0.8.1/.github/workflows/ci.yml new/aws-c-s3-0.8.3/.github/workflows/ci.yml --- old/aws-c-s3-0.8.1/.github/workflows/ci.yml 2025-06-07 01:19:24.000000000 +0200 +++ new/aws-c-s3-0.8.3/.github/workflows/ci.yml 2025-06-24 20:52:52.000000000 +0200 @@ -69,24 +69,24 @@ - name: gcc-8 - name: gcc-11 - name: gcc-13 - # See Issue: https://github.com/llvm/llvm-project/issues/59007. Although this issue - # has been fixed in LLVM, the fix will probably not propagate to older versions of Ubuntu and GCC 13.1. + # See Issue: https://github.com/llvm/llvm-project/issues/59007. Although this issue + # has been fixed in LLVM, the fix will probably not propagate to older versions of Ubuntu and GCC 13.1. # - # Starting with GLIBC version 2.34, the `dn_expand` function, previously found in `libresolv.so`, was moved to `libc.so`. This + # Starting with GLIBC version 2.34, the `dn_expand` function, previously found in `libresolv.so`, was moved to `libc.so`. This # function is used internally by the `getaddrinfo()` system call. # - # In our setup (As of December 2024), we are using an Ubuntu 18 Docker image on a newer Ubuntu host. + # In our setup (As of December 2024), we are using an Ubuntu 18 Docker image on a newer Ubuntu host. # However, due to compatibility issues between newer libasan.so in GCC 13.1 - # and the older Ubuntu image, the linker does not link with `libresolv.so`. + # and the older Ubuntu image, the linker does not link with `libresolv.so`. # This results in crashes in `getaddrinfo()` since Ubuntu-18 GLIBC is 2.31. # - # This problem does not occur on Ubuntu 22 and newer because GLIBC versions 2.34 - # and above include `dn_expand` in `libc.so`, eliminating the dependency on + # This problem does not occur on Ubuntu 22 and newer because GLIBC versions 2.34 + # and above include `dn_expand` in `libc.so`, eliminating the dependency on # `libresolv.so`. # - # We can bypass this problem by linking with "resolv" manually until we bump + # We can bypass this problem by linking with "resolv" manually until we bump # our base Linux image to Ubuntu 22. - extra-build-flag: --cmake-extra=-DCMAKE_EXE_LINKER_FLAGS="-lresolv" + extra-build-flag: --cmake-extra=-DCMAKE_EXE_LINKER_FLAGS="-lresolv" steps: - uses: aws-actions/configure-aws-credentials@v4 with: @@ -141,7 +141,7 @@ ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ env.LINUX_BASE_IMAGE }} build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DBYO_CRYPTO=ON --cmake-extra=-DASSERT_LOCK_HELD=ON windows: - runs-on: windows-2022 # latest + runs-on: windows-2025 # latest steps: - uses: aws-actions/configure-aws-credentials@v4 with: @@ -152,8 +152,8 @@ python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')" python builder.pyz build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DASSERT_LOCK_HELD=ON - windows-vc14: - runs-on: windows-2019 # windows-2019 is last env with Visual Studio 2015 (v14.0) + windows-vc17: + runs-on: windows-2025 # latest strategy: fail-fast: false matrix: @@ -166,10 +166,10 @@ - name: Build ${{ env.PACKAGE_NAME }} + consumers run: | python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')" - python builder.pyz build -p ${{ env.PACKAGE_NAME }} --target windows-${{ matrix.arch }} --cmake-extra=-DASSERT_LOCK_HELD=ON --compiler msvc-14 + python builder.pyz build -p ${{ env.PACKAGE_NAME }} --target windows-${{ matrix.arch }} --cmake-extra=-DASSERT_LOCK_HELD=ON --compiler msvc-17 windows-shared-libs: - runs-on: windows-2022 # latest + runs-on: windows-2025 # latest steps: - uses: aws-actions/configure-aws-credentials@v4 with: @@ -181,7 +181,7 @@ python builder.pyz build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DBUILD_SHARED_LIBS=ON --cmake-extra=-DASSERT_LOCK_HELD=ON windows-app-verifier: - runs-on: windows-2022 # latest + runs-on: windows-2025 # latest steps: - uses: aws-actions/configure-aws-credentials@v4 with: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-s3-0.8.1/include/aws/s3/private/s3_meta_request_impl.h new/aws-c-s3-0.8.3/include/aws/s3/private/s3_meta_request_impl.h --- old/aws-c-s3-0.8.1/include/aws/s3/private/s3_meta_request_impl.h 2025-06-07 01:19:24.000000000 +0200 +++ new/aws-c-s3-0.8.3/include/aws/s3/private/s3_meta_request_impl.h 2025-06-24 20:52:52.000000000 +0200 @@ -242,7 +242,6 @@ * The length will always be less than part-size */ struct aws_byte_buf buffered_data; struct aws_s3_buffer_ticket *buffered_data_ticket; - struct aws_future_s3_buffer_ticket *buffered_ticket_future; /* Waker callback. * Stored if a poll_write() call returns result.is_pending diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-s3-0.8.1/include/aws/s3/s3_buffer_pool.h new/aws-c-s3-0.8.3/include/aws/s3/s3_buffer_pool.h --- old/aws-c-s3-0.8.1/include/aws/s3/s3_buffer_pool.h 2025-06-07 01:19:24.000000000 +0200 +++ new/aws-c-s3-0.8.3/include/aws/s3/s3_buffer_pool.h 2025-06-24 20:52:52.000000000 +0200 @@ -141,7 +141,8 @@ * by logging failure reason, returning null and raising aws_error. */ typedef struct aws_s3_buffer_pool *(aws_s3_buffer_pool_factory_fn)(struct aws_allocator *allocator, - struct aws_s3_buffer_pool_config config); + struct aws_s3_buffer_pool_config config, + void *user_data); AWS_EXTERN_C_END AWS_POP_SANE_WARNING_LEVEL diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-s3-0.8.1/include/aws/s3/s3_client.h new/aws-c-s3-0.8.3/include/aws/s3/s3_client.h --- old/aws-c-s3-0.8.1/include/aws/s3/s3_client.h 2025-06-07 01:19:24.000000000 +0200 +++ new/aws-c-s3-0.8.3/include/aws/s3/s3_client.h 2025-06-24 20:52:52.000000000 +0200 @@ -606,6 +606,9 @@ * if not set creates default implementation of the buffer pool. */ aws_s3_buffer_pool_factory_fn *buffer_pool_factory_fn; + + /* User data thats passed into pool factory. */ + void *buffer_pool_user_data; }; struct aws_s3_checksum_config { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-s3-0.8.1/source/s3_client.c new/aws-c-s3-0.8.3/source/s3_client.c --- old/aws-c-s3-0.8.1/source/s3_client.c 2025-06-07 01:19:24.000000000 +0200 +++ new/aws-c-s3-0.8.3/source/s3_client.c 2025-06-24 20:52:52.000000000 +0200 @@ -367,7 +367,8 @@ }; if (client_config->buffer_pool_factory_fn) { - client->buffer_pool = client_config->buffer_pool_factory_fn(allocator, buffer_pool_config); + client->buffer_pool = + client_config->buffer_pool_factory_fn(allocator, buffer_pool_config, client_config->buffer_pool_user_data); } else { client->buffer_pool = aws_s3_default_buffer_pool_new(allocator, buffer_pool_config); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-s3-0.8.1/source/s3_endpoint_resolver/aws_s3_endpoint_resolver_partition.c new/aws-c-s3-0.8.3/source/s3_endpoint_resolver/aws_s3_endpoint_resolver_partition.c --- old/aws-c-s3-0.8.1/source/s3_endpoint_resolver/aws_s3_endpoint_resolver_partition.c 2025-06-07 01:19:24.000000000 +0200 +++ new/aws-c-s3-0.8.3/source/s3_endpoint_resolver/aws_s3_endpoint_resolver_partition.c 2025-06-24 20:52:52.000000000 +0200 @@ -29,227 +29,229 @@ 'C', 'a', 'p', 'e', ' ', 'T', 'o', 'w', 'n', ')', '"', '}', ',', '"', 'a', 'p', '-', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'H', 'o', 'n', 'g', ' ', - 'K', 'o', 'n', 'g', ')', '"', '}', ',', '"', 'a', 'p', '-', 'n', 'o', 'r', 't', 'h', 'e', 'a', 's', - 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', - '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'T', 'o', 'k', 'y', 'o', - ')', '"', '}', ',', '"', 'a', 'p', '-', 'n', 'o', 'r', 't', 'h', 'e', 'a', 's', 't', '-', '2', '"', - ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', - 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'S', 'e', 'o', 'u', 'l', ')', '"', '}', ',', - '"', 'a', 'p', '-', 'n', 'o', 'r', 't', 'h', 'e', 'a', 's', 't', '-', '3', '"', ':', '{', '"', 'd', + 'K', 'o', 'n', 'g', ')', '"', '}', ',', '"', 'a', 'p', '-', 'e', 'a', 's', 't', '-', '2', '"', ':', + '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', + ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'T', 'a', 'i', 'p', 'e', 'i', ')', '"', '}', ',', + '"', 'a', 'p', '-', 'n', 'o', 'r', 't', 'h', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', - 'c', 'i', 'f', 'i', 'c', ' ', '(', 'O', 's', 'a', 'k', 'a', ')', '"', '}', ',', '"', 'a', 'p', '-', - 's', 'o', 'u', 't', 'h', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', + 'c', 'i', 'f', 'i', 'c', ' ', '(', 'T', 'o', 'k', 'y', 'o', ')', '"', '}', ',', '"', 'a', 'p', '-', + 'n', 'o', 'r', 't', 'h', 'e', 'a', 's', 't', '-', '2', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', + 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', + 'c', ' ', '(', 'S', 'e', 'o', 'u', 'l', ')', '"', '}', ',', '"', 'a', 'p', '-', 'n', 'o', 'r', 't', + 'h', 'e', 'a', 's', 't', '-', '3', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', + 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'O', + 's', 'a', 'k', 'a', ')', '"', '}', ',', '"', 'a', 'p', '-', 's', 'o', 'u', 't', 'h', '-', '1', '"', + ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', + 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'M', 'u', 'm', 'b', 'a', 'i', ')', '"', '}', + ',', '"', 'a', 'p', '-', 's', 'o', 'u', 't', 'h', '-', '2', '"', ':', '{', '"', 'd', 'e', 's', 'c', + 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', + 'i', 'c', ' ', '(', 'H', 'y', 'd', 'e', 'r', 'a', 'b', 'a', 'd', ')', '"', '}', ',', '"', 'a', 'p', + '-', 's', 'o', 'u', 't', 'h', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', + 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', + 'i', 'c', ' ', '(', 'S', 'i', 'n', 'g', 'a', 'p', 'o', 'r', 'e', ')', '"', '}', ',', '"', 'a', 'p', + '-', 's', 'o', 'u', 't', 'h', 'e', 'a', 's', 't', '-', '2', '"', ':', '{', '"', 'd', 'e', 's', 'c', + 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', + 'i', 'c', ' ', '(', 'S', 'y', 'd', 'n', 'e', 'y', ')', '"', '}', ',', '"', 'a', 'p', '-', 's', 'o', + 'u', 't', 'h', 'e', 'a', 's', 't', '-', '3', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', + 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', + '(', 'J', 'a', 'k', 'a', 'r', 't', 'a', ')', '"', '}', ',', '"', 'a', 'p', '-', 's', 'o', 'u', 't', + 'h', 'e', 'a', 's', 't', '-', '4', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'M', - 'u', 'm', 'b', 'a', 'i', ')', '"', '}', ',', '"', 'a', 'p', '-', 's', 'o', 'u', 't', 'h', '-', '2', - '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', - 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'H', 'y', 'd', 'e', 'r', 'a', 'b', 'a', - 'd', ')', '"', '}', ',', '"', 'a', 'p', '-', 's', 'o', 'u', 't', 'h', 'e', 'a', 's', 't', '-', '1', - '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', - 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'S', 'i', 'n', 'g', 'a', 'p', 'o', 'r', - 'e', ')', '"', '}', ',', '"', 'a', 'p', '-', 's', 'o', 'u', 't', 'h', 'e', 'a', 's', 't', '-', '2', - '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', - 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'S', 'y', 'd', 'n', 'e', 'y', ')', '"', - '}', ',', '"', 'a', 'p', '-', 's', 'o', 'u', 't', 'h', 'e', 'a', 's', 't', '-', '3', '"', ':', '{', - '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', - 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'J', 'a', 'k', 'a', 'r', 't', 'a', ')', '"', '}', ',', - '"', 'a', 'p', '-', 's', 'o', 'u', 't', 'h', 'e', 'a', 's', 't', '-', '4', '"', ':', '{', '"', 'd', - 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', - 'c', 'i', 'f', 'i', 'c', ' ', '(', 'M', 'e', 'l', 'b', 'o', 'u', 'r', 'n', 'e', ')', '"', '}', ',', - '"', 'a', 'p', '-', 's', 'o', 'u', 't', 'h', 'e', 'a', 's', 't', '-', '5', '"', ':', '{', '"', 'd', - 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', - 'c', 'i', 'f', 'i', 'c', ' ', '(', 'M', 'a', 'l', 'a', 'y', 's', 'i', 'a', ')', '"', '}', ',', '"', - 'a', 'p', '-', 's', 'o', 'u', 't', 'h', 'e', 'a', 's', 't', '-', '7', '"', ':', '{', '"', 'd', 'e', - 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', - 'i', 'f', 'i', 'c', ' ', '(', 'T', 'h', 'a', 'i', 'l', 'a', 'n', 'd', ')', '"', '}', ',', '"', 'a', - 'w', 's', '-', 'g', 'l', 'o', 'b', 'a', 'l', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', - 't', 'i', 'o', 'n', '"', ':', '"', 'A', 'W', 'S', ' ', 'S', 't', 'a', 'n', 'd', 'a', 'r', 'd', ' ', - 'g', 'l', 'o', 'b', 'a', 'l', ' ', 'r', 'e', 'g', 'i', 'o', 'n', '"', '}', ',', '"', 'c', 'a', '-', - 'c', 'e', 'n', 't', 'r', 'a', 'l', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', - 't', 'i', 'o', 'n', '"', ':', '"', 'C', 'a', 'n', 'a', 'd', 'a', ' ', '(', 'C', 'e', 'n', 't', 'r', - 'a', 'l', ')', '"', '}', ',', '"', 'c', 'a', '-', 'w', 'e', 's', 't', '-', '1', '"', ':', '{', '"', - 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'C', 'a', 'n', 'a', 'd', 'a', - ' ', 'W', 'e', 's', 't', ' ', '(', 'C', 'a', 'l', 'g', 'a', 'r', 'y', ')', '"', '}', ',', '"', 'e', - 'u', '-', 'c', 'e', 'n', 't', 'r', 'a', 'l', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', - 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'u', 'r', 'o', 'p', 'e', ' ', '(', 'F', 'r', 'a', - 'n', 'k', 'f', 'u', 'r', 't', ')', '"', '}', ',', '"', 'e', 'u', '-', 'c', 'e', 'n', 't', 'r', 'a', - 'l', '-', '2', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', - '"', 'E', 'u', 'r', 'o', 'p', 'e', ' ', '(', 'Z', 'u', 'r', 'i', 'c', 'h', ')', '"', '}', ',', '"', - 'e', 'u', '-', 'n', 'o', 'r', 't', 'h', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', - 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'u', 'r', 'o', 'p', 'e', ' ', '(', 'S', 't', 'o', 'c', - 'k', 'h', 'o', 'l', 'm', ')', '"', '}', ',', '"', 'e', 'u', '-', 's', 'o', 'u', 't', 'h', '-', '1', - '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'u', - 'r', 'o', 'p', 'e', ' ', '(', 'M', 'i', 'l', 'a', 'n', ')', '"', '}', ',', '"', 'e', 'u', '-', 's', - 'o', 'u', 't', 'h', '-', '2', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', - 'n', '"', ':', '"', 'E', 'u', 'r', 'o', 'p', 'e', ' ', '(', 'S', 'p', 'a', 'i', 'n', ')', '"', '}', - ',', '"', 'e', 'u', '-', 'w', 'e', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', - 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'u', 'r', 'o', 'p', 'e', ' ', '(', 'I', 'r', 'e', - 'l', 'a', 'n', 'd', ')', '"', '}', ',', '"', 'e', 'u', '-', 'w', 'e', 's', 't', '-', '2', '"', ':', - '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'u', 'r', 'o', - 'p', 'e', ' ', '(', 'L', 'o', 'n', 'd', 'o', 'n', ')', '"', '}', ',', '"', 'e', 'u', '-', 'w', 'e', - 's', 't', '-', '3', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', - ':', '"', 'E', 'u', 'r', 'o', 'p', 'e', ' ', '(', 'P', 'a', 'r', 'i', 's', ')', '"', '}', ',', '"', - 'i', 'l', '-', 'c', 'e', 'n', 't', 'r', 'a', 'l', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', - 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'I', 's', 'r', 'a', 'e', 'l', ' ', '(', 'T', 'e', - 'l', ' ', 'A', 'v', 'i', 'v', ')', '"', '}', ',', '"', 'm', 'e', '-', 'c', 'e', 'n', 't', 'r', 'a', + 'e', 'l', 'b', 'o', 'u', 'r', 'n', 'e', ')', '"', '}', ',', '"', 'a', 'p', '-', 's', 'o', 'u', 't', + 'h', 'e', 'a', 's', 't', '-', '5', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', + 'o', 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'M', + 'a', 'l', 'a', 'y', 's', 'i', 'a', ')', '"', '}', ',', '"', 'a', 'p', '-', 's', 'o', 'u', 't', 'h', + 'e', 'a', 's', 't', '-', '7', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', + 'n', '"', ':', '"', 'A', 's', 'i', 'a', ' ', 'P', 'a', 'c', 'i', 'f', 'i', 'c', ' ', '(', 'T', 'h', + 'a', 'i', 'l', 'a', 'n', 'd', ')', '"', '}', ',', '"', 'a', 'w', 's', '-', 'g', 'l', 'o', 'b', 'a', + 'l', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', + 'W', 'S', ' ', 'S', 't', 'a', 'n', 'd', 'a', 'r', 'd', ' ', 'g', 'l', 'o', 'b', 'a', 'l', ' ', 'r', + 'e', 'g', 'i', 'o', 'n', '"', '}', ',', '"', 'c', 'a', '-', 'c', 'e', 'n', 't', 'r', 'a', 'l', '-', + '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'C', + 'a', 'n', 'a', 'd', 'a', ' ', '(', 'C', 'e', 'n', 't', 'r', 'a', 'l', ')', '"', '}', ',', '"', 'c', + 'a', '-', 'w', 'e', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', + 'i', 'o', 'n', '"', ':', '"', 'C', 'a', 'n', 'a', 'd', 'a', ' ', 'W', 'e', 's', 't', ' ', '(', 'C', + 'a', 'l', 'g', 'a', 'r', 'y', ')', '"', '}', ',', '"', 'e', 'u', '-', 'c', 'e', 'n', 't', 'r', 'a', 'l', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', - '"', 'M', 'i', 'd', 'd', 'l', 'e', ' ', 'E', 'a', 's', 't', ' ', '(', 'U', 'A', 'E', ')', '"', '}', - ',', '"', 'm', 'e', '-', 's', 'o', 'u', 't', 'h', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', - 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'M', 'i', 'd', 'd', 'l', 'e', ' ', 'E', 'a', 's', - 't', ' ', '(', 'B', 'a', 'h', 'r', 'a', 'i', 'n', ')', '"', '}', ',', '"', 'm', 'x', '-', 'c', 'e', - 'n', 't', 'r', 'a', 'l', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', - 'o', 'n', '"', ':', '"', 'M', 'e', 'x', 'i', 'c', 'o', ' ', '(', 'C', 'e', 'n', 't', 'r', 'a', 'l', - ')', '"', '}', ',', '"', 's', 'a', '-', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', - 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'S', 'o', 'u', 't', 'h', ' ', 'A', 'm', - 'e', 'r', 'i', 'c', 'a', ' ', '(', 'S', 'a', 'o', ' ', 'P', 'a', 'u', 'l', 'o', ')', '"', '}', ',', - '"', 'u', 's', '-', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', - 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'U', 'S', ' ', 'E', 'a', 's', 't', ' ', '(', 'N', '.', ' ', - 'V', 'i', 'r', 'g', 'i', 'n', 'i', 'a', ')', '"', '}', ',', '"', 'u', 's', '-', 'e', 'a', 's', 't', - '-', '2', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', - 'U', 'S', ' ', 'E', 'a', 's', 't', ' ', '(', 'O', 'h', 'i', 'o', ')', '"', '}', ',', '"', 'u', 's', - '-', 'w', 'e', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', - 'o', 'n', '"', ':', '"', 'U', 'S', ' ', 'W', 'e', 's', 't', ' ', '(', 'N', '.', ' ', 'C', 'a', 'l', - 'i', 'f', 'o', 'r', 'n', 'i', 'a', ')', '"', '}', ',', '"', 'u', 's', '-', 'w', 'e', 's', 't', '-', - '2', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'U', - 'S', ' ', 'W', 'e', 's', 't', ' ', '(', 'O', 'r', 'e', 'g', 'o', 'n', ')', '"', '}', '}', '}', ',', - '{', '"', 'i', 'd', '"', ':', '"', 'a', 'w', 's', '-', 'c', 'n', '"', ',', '"', 'o', 'u', 't', 'p', - 'u', 't', 's', '"', ':', '{', '"', 'd', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'a', - 'm', 'a', 'z', 'o', 'n', 'a', 'w', 's', '.', 'c', 'o', 'm', '.', 'c', 'n', '"', ',', '"', 'd', 'u', - 'a', 'l', 'S', 't', 'a', 'c', 'k', 'D', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'a', - 'p', 'i', '.', 'a', 'm', 'a', 'z', 'o', 'n', 'w', 'e', 'b', 's', 'e', 'r', 'v', 'i', 'c', 'e', 's', - '.', 'c', 'o', 'm', '.', 'c', 'n', '"', ',', '"', 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't', 'G', 'l', - 'o', 'b', 'a', 'l', 'R', 'e', 'g', 'i', 'o', 'n', '"', ':', '"', 'c', 'n', '-', 'n', 'o', 'r', 't', - 'h', 'w', 'e', 's', 't', '-', '1', '"', ',', '"', 'n', 'a', 'm', 'e', '"', ':', '"', 'a', 'w', 's', - '-', 'c', 'n', '"', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'D', 'u', 'a', 'l', 'S', 't', - 'a', 'c', 'k', '"', ':', 't', 'r', 'u', 'e', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'F', - 'I', 'P', 'S', '"', ':', 't', 'r', 'u', 'e', '}', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 'R', 'e', - 'g', 'e', 'x', '"', ':', '"', '^', 'c', 'n', '\\', '\\', '-', '\\', '\\', 'w', '+', '\\', '\\', '-', '\\', - '\\', 'd', '+', '$', '"', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 's', '"', ':', '{', '"', 'a', 'w', - 's', '-', 'c', 'n', '-', 'g', 'l', 'o', 'b', 'a', 'l', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', - 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 'W', 'S', ' ', 'C', 'h', 'i', 'n', 'a', ' ', 'g', - 'l', 'o', 'b', 'a', 'l', ' ', 'r', 'e', 'g', 'i', 'o', 'n', '"', '}', ',', '"', 'c', 'n', '-', 'n', - 'o', 'r', 't', 'h', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', - 'n', '"', ':', '"', 'C', 'h', 'i', 'n', 'a', ' ', '(', 'B', 'e', 'i', 'j', 'i', 'n', 'g', ')', '"', - '}', ',', '"', 'c', 'n', '-', 'n', 'o', 'r', 't', 'h', 'w', 'e', 's', 't', '-', '1', '"', ':', '{', - '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'C', 'h', 'i', 'n', 'a', - ' ', '(', 'N', 'i', 'n', 'g', 'x', 'i', 'a', ')', '"', '}', '}', '}', ',', '{', '"', 'i', 'd', '"', - ':', '"', 'a', 'w', 's', '-', 'u', 's', '-', 'g', 'o', 'v', '"', ',', '"', 'o', 'u', 't', 'p', 'u', - 't', 's', '"', ':', '{', '"', 'd', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'a', 'm', - 'a', 'z', 'o', 'n', 'a', 'w', 's', '.', 'c', 'o', 'm', '"', ',', '"', 'd', 'u', 'a', 'l', 'S', 't', - 'a', 'c', 'k', 'D', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'a', 'p', 'i', '.', 'a', - 'w', 's', '"', ',', '"', 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't', 'G', 'l', 'o', 'b', 'a', 'l', 'R', - 'e', 'g', 'i', 'o', 'n', '"', ':', '"', 'u', 's', '-', 'g', 'o', 'v', '-', 'w', 'e', 's', 't', '-', - '1', '"', ',', '"', 'n', 'a', 'm', 'e', '"', ':', '"', 'a', 'w', 's', '-', 'u', 's', '-', 'g', 'o', - 'v', '"', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'D', 'u', 'a', 'l', 'S', 't', 'a', 'c', - 'k', '"', ':', 't', 'r', 'u', 'e', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'F', 'I', 'P', - 'S', '"', ':', 't', 'r', 'u', 'e', '}', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 'R', 'e', 'g', 'e', - 'x', '"', ':', '"', '^', 'u', 's', '\\', '\\', '-', 'g', 'o', 'v', '\\', '\\', '-', '\\', '\\', 'w', '+', - '\\', '\\', '-', '\\', '\\', 'd', '+', '$', '"', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 's', '"', ':', - '{', '"', 'a', 'w', 's', '-', 'u', 's', '-', 'g', 'o', 'v', '-', 'g', 'l', 'o', 'b', 'a', 'l', '"', - ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 'W', 'S', - ' ', 'G', 'o', 'v', 'C', 'l', 'o', 'u', 'd', ' ', '(', 'U', 'S', ')', ' ', 'g', 'l', 'o', 'b', 'a', - 'l', ' ', 'r', 'e', 'g', 'i', 'o', 'n', '"', '}', ',', '"', 'u', 's', '-', 'g', 'o', 'v', '-', 'e', - 'a', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', - '"', ':', '"', 'A', 'W', 'S', ' ', 'G', 'o', 'v', 'C', 'l', 'o', 'u', 'd', ' ', '(', 'U', 'S', '-', - 'E', 'a', 's', 't', ')', '"', '}', ',', '"', 'u', 's', '-', 'g', 'o', 'v', '-', 'w', 'e', 's', 't', + '"', 'E', 'u', 'r', 'o', 'p', 'e', ' ', '(', 'F', 'r', 'a', 'n', 'k', 'f', 'u', 'r', 't', ')', '"', + '}', ',', '"', 'e', 'u', '-', 'c', 'e', 'n', 't', 'r', 'a', 'l', '-', '2', '"', ':', '{', '"', 'd', + 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'u', 'r', 'o', 'p', 'e', ' ', + '(', 'Z', 'u', 'r', 'i', 'c', 'h', ')', '"', '}', ',', '"', 'e', 'u', '-', 'n', 'o', 'r', 't', 'h', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', - 'A', 'W', 'S', ' ', 'G', 'o', 'v', 'C', 'l', 'o', 'u', 'd', ' ', '(', 'U', 'S', '-', 'W', 'e', 's', - 't', ')', '"', '}', '}', '}', ',', '{', '"', 'i', 'd', '"', ':', '"', 'a', 'w', 's', '-', 'i', 's', - 'o', '"', ',', '"', 'o', 'u', 't', 'p', 'u', 't', 's', '"', ':', '{', '"', 'd', 'n', 's', 'S', 'u', - 'f', 'f', 'i', 'x', '"', ':', '"', 'c', '2', 's', '.', 'i', 'c', '.', 'g', 'o', 'v', '"', ',', '"', - 'd', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', 'D', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', - '"', 'c', '2', 's', '.', 'i', 'c', '.', 'g', 'o', 'v', '"', ',', '"', 'i', 'm', 'p', 'l', 'i', 'c', - 'i', 't', 'G', 'l', 'o', 'b', 'a', 'l', 'R', 'e', 'g', 'i', 'o', 'n', '"', ':', '"', 'u', 's', '-', - 'i', 's', 'o', '-', 'e', 'a', 's', 't', '-', '1', '"', ',', '"', 'n', 'a', 'm', 'e', '"', ':', '"', - 'a', 'w', 's', '-', 'i', 's', 'o', '"', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'D', 'u', - 'a', 'l', 'S', 't', 'a', 'c', 'k', '"', ':', 'f', 'a', 'l', 's', 'e', ',', '"', 's', 'u', 'p', 'p', - 'o', 'r', 't', 's', 'F', 'I', 'P', 'S', '"', ':', 't', 'r', 'u', 'e', '}', ',', '"', 'r', 'e', 'g', - 'i', 'o', 'n', 'R', 'e', 'g', 'e', 'x', '"', ':', '"', '^', 'u', 's', '\\', '\\', '-', 'i', 's', 'o', - '\\', '\\', '-', '\\', '\\', 'w', '+', '\\', '\\', '-', '\\', '\\', 'd', '+', '$', '"', ',', '"', 'r', 'e', - 'g', 'i', 'o', 'n', 's', '"', ':', '{', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'g', 'l', 'o', + 'E', 'u', 'r', 'o', 'p', 'e', ' ', '(', 'S', 't', 'o', 'c', 'k', 'h', 'o', 'l', 'm', ')', '"', '}', + ',', '"', 'e', 'u', '-', 's', 'o', 'u', 't', 'h', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', + 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'u', 'r', 'o', 'p', 'e', ' ', '(', 'M', 'i', + 'l', 'a', 'n', ')', '"', '}', ',', '"', 'e', 'u', '-', 's', 'o', 'u', 't', 'h', '-', '2', '"', ':', + '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'u', 'r', 'o', + 'p', 'e', ' ', '(', 'S', 'p', 'a', 'i', 'n', ')', '"', '}', ',', '"', 'e', 'u', '-', 'w', 'e', 's', + 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', + '"', 'E', 'u', 'r', 'o', 'p', 'e', ' ', '(', 'I', 'r', 'e', 'l', 'a', 'n', 'd', ')', '"', '}', ',', + '"', 'e', 'u', '-', 'w', 'e', 's', 't', '-', '2', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', + 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'u', 'r', 'o', 'p', 'e', ' ', '(', 'L', 'o', 'n', 'd', + 'o', 'n', ')', '"', '}', ',', '"', 'e', 'u', '-', 'w', 'e', 's', 't', '-', '3', '"', ':', '{', '"', + 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'u', 'r', 'o', 'p', 'e', + ' ', '(', 'P', 'a', 'r', 'i', 's', ')', '"', '}', ',', '"', 'i', 'l', '-', 'c', 'e', 'n', 't', 'r', + 'a', 'l', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', + ':', '"', 'I', 's', 'r', 'a', 'e', 'l', ' ', '(', 'T', 'e', 'l', ' ', 'A', 'v', 'i', 'v', ')', '"', + '}', ',', '"', 'm', 'e', '-', 'c', 'e', 'n', 't', 'r', 'a', 'l', '-', '1', '"', ':', '{', '"', 'd', + 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'M', 'i', 'd', 'd', 'l', 'e', ' ', + 'E', 'a', 's', 't', ' ', '(', 'U', 'A', 'E', ')', '"', '}', ',', '"', 'm', 'e', '-', 's', 'o', 'u', + 't', 'h', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', + ':', '"', 'M', 'i', 'd', 'd', 'l', 'e', ' ', 'E', 'a', 's', 't', ' ', '(', 'B', 'a', 'h', 'r', 'a', + 'i', 'n', ')', '"', '}', ',', '"', 'm', 'x', '-', 'c', 'e', 'n', 't', 'r', 'a', 'l', '-', '1', '"', + ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'M', 'e', 'x', + 'i', 'c', 'o', ' ', '(', 'C', 'e', 'n', 't', 'r', 'a', 'l', ')', '"', '}', ',', '"', 's', 'a', '-', + 'e', 'a', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', + 'n', '"', ':', '"', 'S', 'o', 'u', 't', 'h', ' ', 'A', 'm', 'e', 'r', 'i', 'c', 'a', ' ', '(', 'S', + 'a', 'o', ' ', 'P', 'a', 'u', 'l', 'o', ')', '"', '}', ',', '"', 'u', 's', '-', 'e', 'a', 's', 't', + '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', + 'U', 'S', ' ', 'E', 'a', 's', 't', ' ', '(', 'N', '.', ' ', 'V', 'i', 'r', 'g', 'i', 'n', 'i', 'a', + ')', '"', '}', ',', '"', 'u', 's', '-', 'e', 'a', 's', 't', '-', '2', '"', ':', '{', '"', 'd', 'e', + 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'U', 'S', ' ', 'E', 'a', 's', 't', ' ', + '(', 'O', 'h', 'i', 'o', ')', '"', '}', ',', '"', 'u', 's', '-', 'w', 'e', 's', 't', '-', '1', '"', + ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'U', 'S', ' ', + 'W', 'e', 's', 't', ' ', '(', 'N', '.', ' ', 'C', 'a', 'l', 'i', 'f', 'o', 'r', 'n', 'i', 'a', ')', + '"', '}', ',', '"', 'u', 's', '-', 'w', 'e', 's', 't', '-', '2', '"', ':', '{', '"', 'd', 'e', 's', + 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'U', 'S', ' ', 'W', 'e', 's', 't', ' ', '(', + 'O', 'r', 'e', 'g', 'o', 'n', ')', '"', '}', '}', '}', ',', '{', '"', 'i', 'd', '"', ':', '"', 'a', + 'w', 's', '-', 'c', 'n', '"', ',', '"', 'o', 'u', 't', 'p', 'u', 't', 's', '"', ':', '{', '"', 'd', + 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'a', 'm', 'a', 'z', 'o', 'n', 'a', 'w', 's', + '.', 'c', 'o', 'm', '.', 'c', 'n', '"', ',', '"', 'd', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', 'D', + 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'a', 'p', 'i', '.', 'a', 'm', 'a', 'z', 'o', + 'n', 'w', 'e', 'b', 's', 'e', 'r', 'v', 'i', 'c', 'e', 's', '.', 'c', 'o', 'm', '.', 'c', 'n', '"', + ',', '"', 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't', 'G', 'l', 'o', 'b', 'a', 'l', 'R', 'e', 'g', 'i', + 'o', 'n', '"', ':', '"', 'c', 'n', '-', 'n', 'o', 'r', 't', 'h', 'w', 'e', 's', 't', '-', '1', '"', + ',', '"', 'n', 'a', 'm', 'e', '"', ':', '"', 'a', 'w', 's', '-', 'c', 'n', '"', ',', '"', 's', 'u', + 'p', 'p', 'o', 'r', 't', 's', 'D', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', '"', ':', 't', 'r', 'u', + 'e', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'F', 'I', 'P', 'S', '"', ':', 't', 'r', 'u', + 'e', '}', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 'R', 'e', 'g', 'e', 'x', '"', ':', '"', '^', 'c', + 'n', '\\', '\\', '-', '\\', '\\', 'w', '+', '\\', '\\', '-', '\\', '\\', 'd', '+', '$', '"', ',', '"', 'r', + 'e', 'g', 'i', 'o', 'n', 's', '"', ':', '{', '"', 'a', 'w', 's', '-', 'c', 'n', '-', 'g', 'l', 'o', 'b', 'a', 'l', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', - '"', 'A', 'W', 'S', ' ', 'I', 'S', 'O', ' ', '(', 'U', 'S', ')', ' ', 'g', 'l', 'o', 'b', 'a', 'l', - ' ', 'r', 'e', 'g', 'i', 'o', 'n', '"', '}', ',', '"', 'u', 's', '-', 'i', 's', 'o', '-', 'e', 'a', - 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', - ':', '"', 'U', 'S', ' ', 'I', 'S', 'O', ' ', 'E', 'a', 's', 't', '"', '}', ',', '"', 'u', 's', '-', - 'i', 's', 'o', '-', 'w', 'e', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', - 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'U', 'S', ' ', 'I', 'S', 'O', ' ', 'W', 'E', 'S', 'T', '"', - '}', '}', '}', ',', '{', '"', 'i', 'd', '"', ':', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'b', - '"', ',', '"', 'o', 'u', 't', 'p', 'u', 't', 's', '"', ':', '{', '"', 'd', 'n', 's', 'S', 'u', 'f', - 'f', 'i', 'x', '"', ':', '"', 's', 'c', '2', 's', '.', 's', 'g', 'o', 'v', '.', 'g', 'o', 'v', '"', - ',', '"', 'd', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', 'D', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', - '"', ':', '"', 's', 'c', '2', 's', '.', 's', 'g', 'o', 'v', '.', 'g', 'o', 'v', '"', ',', '"', 'i', - 'm', 'p', 'l', 'i', 'c', 'i', 't', 'G', 'l', 'o', 'b', 'a', 'l', 'R', 'e', 'g', 'i', 'o', 'n', '"', - ':', '"', 'u', 's', '-', 'i', 's', 'o', 'b', '-', 'e', 'a', 's', 't', '-', '1', '"', ',', '"', 'n', - 'a', 'm', 'e', '"', ':', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'b', '"', ',', '"', 's', 'u', - 'p', 'p', 'o', 'r', 't', 's', 'D', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', '"', ':', 'f', 'a', 'l', - 's', 'e', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'F', 'I', 'P', 'S', '"', ':', 't', 'r', - 'u', 'e', '}', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 'R', 'e', 'g', 'e', 'x', '"', ':', '"', '^', - 'u', 's', '\\', '\\', '-', 'i', 's', 'o', 'b', '\\', '\\', '-', '\\', '\\', 'w', '+', '\\', '\\', '-', '\\', - '\\', 'd', '+', '$', '"', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 's', '"', ':', '{', '"', 'a', 'w', - 's', '-', 'i', 's', 'o', '-', 'b', '-', 'g', 'l', 'o', 'b', 'a', 'l', '"', ':', '{', '"', 'd', 'e', - 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 'W', 'S', ' ', 'I', 'S', 'O', 'B', - ' ', '(', 'U', 'S', ')', ' ', 'g', 'l', 'o', 'b', 'a', 'l', ' ', 'r', 'e', 'g', 'i', 'o', 'n', '"', - '}', ',', '"', 'u', 's', '-', 'i', 's', 'o', 'b', '-', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', - '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'U', 'S', ' ', 'I', 'S', - 'O', 'B', ' ', 'E', 'a', 's', 't', ' ', '(', 'O', 'h', 'i', 'o', ')', '"', '}', '}', '}', ',', '{', - '"', 'i', 'd', '"', ':', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'e', '"', ',', '"', 'o', 'u', - 't', 'p', 'u', 't', 's', '"', ':', '{', '"', 'd', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', - '"', 'c', 'l', 'o', 'u', 'd', '.', 'a', 'd', 'c', '-', 'e', '.', 'u', 'k', '"', ',', '"', 'd', 'u', - 'a', 'l', 'S', 't', 'a', 'c', 'k', 'D', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'c', - 'l', 'o', 'u', 'd', '.', 'a', 'd', 'c', '-', 'e', '.', 'u', 'k', '"', ',', '"', 'i', 'm', 'p', 'l', - 'i', 'c', 'i', 't', 'G', 'l', 'o', 'b', 'a', 'l', 'R', 'e', 'g', 'i', 'o', 'n', '"', ':', '"', 'e', - 'u', '-', 'i', 's', 'o', 'e', '-', 'w', 'e', 's', 't', '-', '1', '"', ',', '"', 'n', 'a', 'm', 'e', - '"', ':', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'e', '"', ',', '"', 's', 'u', 'p', 'p', 'o', - 'r', 't', 's', 'D', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', '"', ':', 'f', 'a', 'l', 's', 'e', ',', + '"', 'A', 'W', 'S', ' ', 'C', 'h', 'i', 'n', 'a', ' ', 'g', 'l', 'o', 'b', 'a', 'l', ' ', 'r', 'e', + 'g', 'i', 'o', 'n', '"', '}', ',', '"', 'c', 'n', '-', 'n', 'o', 'r', 't', 'h', '-', '1', '"', ':', + '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'C', 'h', 'i', 'n', + 'a', ' ', '(', 'B', 'e', 'i', 'j', 'i', 'n', 'g', ')', '"', '}', ',', '"', 'c', 'n', '-', 'n', 'o', + 'r', 't', 'h', 'w', 'e', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', + 't', 'i', 'o', 'n', '"', ':', '"', 'C', 'h', 'i', 'n', 'a', ' ', '(', 'N', 'i', 'n', 'g', 'x', 'i', + 'a', ')', '"', '}', '}', '}', ',', '{', '"', 'i', 'd', '"', ':', '"', 'a', 'w', 's', '-', 'u', 's', + '-', 'g', 'o', 'v', '"', ',', '"', 'o', 'u', 't', 'p', 'u', 't', 's', '"', ':', '{', '"', 'd', 'n', + 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'a', 'm', 'a', 'z', 'o', 'n', 'a', 'w', 's', '.', + 'c', 'o', 'm', '"', ',', '"', 'd', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', 'D', 'n', 's', 'S', 'u', + 'f', 'f', 'i', 'x', '"', ':', '"', 'a', 'p', 'i', '.', 'a', 'w', 's', '"', ',', '"', 'i', 'm', 'p', + 'l', 'i', 'c', 'i', 't', 'G', 'l', 'o', 'b', 'a', 'l', 'R', 'e', 'g', 'i', 'o', 'n', '"', ':', '"', + 'u', 's', '-', 'g', 'o', 'v', '-', 'w', 'e', 's', 't', '-', '1', '"', ',', '"', 'n', 'a', 'm', 'e', + '"', ':', '"', 'a', 'w', 's', '-', 'u', 's', '-', 'g', 'o', 'v', '"', ',', '"', 's', 'u', 'p', 'p', + 'o', 'r', 't', 's', 'D', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', '"', ':', 't', 'r', 'u', 'e', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'F', 'I', 'P', 'S', '"', ':', 't', 'r', 'u', 'e', '}', - ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 'R', 'e', 'g', 'e', 'x', '"', ':', '"', '^', 'e', 'u', '\\', - '\\', '-', 'i', 's', 'o', 'e', '\\', '\\', '-', '\\', '\\', 'w', '+', '\\', '\\', '-', '\\', '\\', 'd', '+', - '$', '"', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 's', '"', ':', '{', '"', 'a', 'w', 's', '-', 'i', - 's', 'o', '-', 'e', '-', 'g', 'l', 'o', 'b', 'a', 'l', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', - 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 'W', 'S', ' ', 'I', 'S', 'O', 'E', ' ', '(', 'E', - 'u', 'r', 'o', 'p', 'e', ')', ' ', 'g', 'l', 'o', 'b', 'a', 'l', ' ', 'r', 'e', 'g', 'i', 'o', 'n', - '"', '}', ',', '"', 'e', 'u', '-', 'i', 's', 'o', 'e', '-', 'w', 'e', 's', 't', '-', '1', '"', ':', - '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'U', ' ', 'I', - 'S', 'O', 'E', ' ', 'W', 'e', 's', 't', '"', '}', '}', '}', ',', '{', '"', 'i', 'd', '"', ':', '"', - 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'f', '"', ',', '"', 'o', 'u', 't', 'p', 'u', 't', 's', '"', - ':', '{', '"', 'd', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'c', 's', 'p', '.', 'h', - 'c', 'i', '.', 'i', 'c', '.', 'g', 'o', 'v', '"', ',', '"', 'd', 'u', 'a', 'l', 'S', 't', 'a', 'c', - 'k', 'D', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'c', 's', 'p', '.', 'h', 'c', 'i', - '.', 'i', 'c', '.', 'g', 'o', 'v', '"', ',', '"', 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't', 'G', 'l', - 'o', 'b', 'a', 'l', 'R', 'e', 'g', 'i', 'o', 'n', '"', ':', '"', 'u', 's', '-', 'i', 's', 'o', 'f', - '-', 's', 'o', 'u', 't', 'h', '-', '1', '"', ',', '"', 'n', 'a', 'm', 'e', '"', ':', '"', 'a', 'w', - 's', '-', 'i', 's', 'o', '-', 'f', '"', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'D', 'u', + ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 'R', 'e', 'g', 'e', 'x', '"', ':', '"', '^', 'u', 's', '\\', + '\\', '-', 'g', 'o', 'v', '\\', '\\', '-', '\\', '\\', 'w', '+', '\\', '\\', '-', '\\', '\\', 'd', '+', '$', + '"', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 's', '"', ':', '{', '"', 'a', 'w', 's', '-', 'u', 's', + '-', 'g', 'o', 'v', '-', 'g', 'l', 'o', 'b', 'a', 'l', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', + 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 'W', 'S', ' ', 'G', 'o', 'v', 'C', 'l', 'o', 'u', + 'd', ' ', '(', 'U', 'S', ')', ' ', 'g', 'l', 'o', 'b', 'a', 'l', ' ', 'r', 'e', 'g', 'i', 'o', 'n', + '"', '}', ',', '"', 'u', 's', '-', 'g', 'o', 'v', '-', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', + '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 'W', 'S', ' ', 'G', + 'o', 'v', 'C', 'l', 'o', 'u', 'd', ' ', '(', 'U', 'S', '-', 'E', 'a', 's', 't', ')', '"', '}', ',', + '"', 'u', 's', '-', 'g', 'o', 'v', '-', 'w', 'e', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', + 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 'W', 'S', ' ', 'G', 'o', 'v', 'C', + 'l', 'o', 'u', 'd', ' ', '(', 'U', 'S', '-', 'W', 'e', 's', 't', ')', '"', '}', '}', '}', ',', '{', + '"', 'i', 'd', '"', ':', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '"', ',', '"', 'o', 'u', 't', 'p', + 'u', 't', 's', '"', ':', '{', '"', 'd', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'c', + '2', 's', '.', 'i', 'c', '.', 'g', 'o', 'v', '"', ',', '"', 'd', 'u', 'a', 'l', 'S', 't', 'a', 'c', + 'k', 'D', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'c', '2', 's', '.', 'i', 'c', '.', + 'g', 'o', 'v', '"', ',', '"', 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't', 'G', 'l', 'o', 'b', 'a', 'l', + 'R', 'e', 'g', 'i', 'o', 'n', '"', ':', '"', 'u', 's', '-', 'i', 's', 'o', '-', 'e', 'a', 's', 't', + '-', '1', '"', ',', '"', 'n', 'a', 'm', 'e', '"', ':', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '"', + ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'D', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', '"', + ':', 'f', 'a', 'l', 's', 'e', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'F', 'I', 'P', 'S', + '"', ':', 't', 'r', 'u', 'e', '}', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 'R', 'e', 'g', 'e', 'x', + '"', ':', '"', '^', 'u', 's', '\\', '\\', '-', 'i', 's', 'o', '\\', '\\', '-', '\\', '\\', 'w', '+', '\\', + '\\', '-', '\\', '\\', 'd', '+', '$', '"', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 's', '"', ':', '{', + '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'g', 'l', 'o', 'b', 'a', 'l', '"', ':', '{', '"', 'd', + 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 'W', 'S', ' ', 'I', 'S', 'O', + ' ', '(', 'U', 'S', ')', ' ', 'g', 'l', 'o', 'b', 'a', 'l', ' ', 'r', 'e', 'g', 'i', 'o', 'n', '"', + '}', ',', '"', 'u', 's', '-', 'i', 's', 'o', '-', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', '"', + 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'U', 'S', ' ', 'I', 'S', 'O', + ' ', 'E', 'a', 's', 't', '"', '}', ',', '"', 'u', 's', '-', 'i', 's', 'o', '-', 'w', 'e', 's', 't', + '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', + 'U', 'S', ' ', 'I', 'S', 'O', ' ', 'W', 'E', 'S', 'T', '"', '}', '}', '}', ',', '{', '"', 'i', 'd', + '"', ':', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'b', '"', ',', '"', 'o', 'u', 't', 'p', 'u', + 't', 's', '"', ':', '{', '"', 'd', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 's', 'c', + '2', 's', '.', 's', 'g', 'o', 'v', '.', 'g', 'o', 'v', '"', ',', '"', 'd', 'u', 'a', 'l', 'S', 't', + 'a', 'c', 'k', 'D', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 's', 'c', '2', 's', '.', + 's', 'g', 'o', 'v', '.', 'g', 'o', 'v', '"', ',', '"', 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't', 'G', + 'l', 'o', 'b', 'a', 'l', 'R', 'e', 'g', 'i', 'o', 'n', '"', ':', '"', 'u', 's', '-', 'i', 's', 'o', + 'b', '-', 'e', 'a', 's', 't', '-', '1', '"', ',', '"', 'n', 'a', 'm', 'e', '"', ':', '"', 'a', 'w', + 's', '-', 'i', 's', 'o', '-', 'b', '"', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'D', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', '"', ':', 'f', 'a', 'l', 's', 'e', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'F', 'I', 'P', 'S', '"', ':', 't', 'r', 'u', 'e', '}', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 'R', 'e', 'g', 'e', 'x', '"', ':', '"', '^', 'u', 's', '\\', '\\', '-', 'i', 's', 'o', - 'f', '\\', '\\', '-', '\\', '\\', 'w', '+', '\\', '\\', '-', '\\', '\\', 'd', '+', '$', '"', ',', '"', 'r', - 'e', 'g', 'i', 'o', 'n', 's', '"', ':', '{', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'f', '-', + 'b', '\\', '\\', '-', '\\', '\\', 'w', '+', '\\', '\\', '-', '\\', '\\', 'd', '+', '$', '"', ',', '"', 'r', + 'e', 'g', 'i', 'o', 'n', 's', '"', ':', '{', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'b', '-', 'g', 'l', 'o', 'b', 'a', 'l', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', - 'n', '"', ':', '"', 'A', 'W', 'S', ' ', 'I', 'S', 'O', 'F', ' ', 'g', 'l', 'o', 'b', 'a', 'l', ' ', - 'r', 'e', 'g', 'i', 'o', 'n', '"', '}', ',', '"', 'u', 's', '-', 'i', 's', 'o', 'f', '-', 'e', 'a', - 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', - ':', '"', 'U', 'S', ' ', 'I', 'S', 'O', 'F', ' ', 'E', 'A', 'S', 'T', '"', '}', ',', '"', 'u', 's', - '-', 'i', 's', 'o', 'f', '-', 's', 'o', 'u', 't', 'h', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', - 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'U', 'S', ' ', 'I', 'S', 'O', 'F', ' ', 'S', - 'O', 'U', 'T', 'H', '"', '}', '}', '}', ',', '{', '"', 'i', 'd', '"', ':', '"', 'a', 'w', 's', '-', - 'e', 'u', 's', 'c', '"', ',', '"', 'o', 'u', 't', 'p', 'u', 't', 's', '"', ':', '{', '"', 'd', 'n', - 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'a', 'm', 'a', 'z', 'o', 'n', 'a', 'w', 's', '.', - 'e', 'u', '"', ',', '"', 'd', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', 'D', 'n', 's', 'S', 'u', 'f', - 'f', 'i', 'x', '"', ':', '"', 'a', 'm', 'a', 'z', 'o', 'n', 'a', 'w', 's', '.', 'e', 'u', '"', ',', - '"', 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't', 'G', 'l', 'o', 'b', 'a', 'l', 'R', 'e', 'g', 'i', 'o', - 'n', '"', ':', '"', 'e', 'u', 's', 'c', '-', 'd', 'e', '-', 'e', 'a', 's', 't', '-', '1', '"', ',', - '"', 'n', 'a', 'm', 'e', '"', ':', '"', 'a', 'w', 's', '-', 'e', 'u', 's', 'c', '"', ',', '"', 's', - 'u', 'p', 'p', 'o', 'r', 't', 's', 'D', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', '"', ':', 'f', 'a', - 'l', 's', 'e', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'F', 'I', 'P', 'S', '"', ':', 't', - 'r', 'u', 'e', '}', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 'R', 'e', 'g', 'e', 'x', '"', ':', '"', - '^', 'e', 'u', 's', 'c', '\\', '\\', '-', '(', 'd', 'e', ')', '\\', '\\', '-', '\\', '\\', 'w', '+', '\\', - '\\', '-', '\\', '\\', 'd', '+', '$', '"', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 's', '"', ':', '{', - '"', 'e', 'u', 's', 'c', '-', 'd', 'e', '-', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', '"', 'd', - 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'U', ' ', '(', 'G', 'e', 'r', - 'm', 'a', 'n', 'y', ')', '"', '}', '}', '}', ']', ',', '"', 'v', 'e', 'r', 's', 'i', 'o', 'n', '"', - ':', '"', '1', '.', '1', '"', '}'}; + 'n', '"', ':', '"', 'A', 'W', 'S', ' ', 'I', 'S', 'O', 'B', ' ', '(', 'U', 'S', ')', ' ', 'g', 'l', + 'o', 'b', 'a', 'l', ' ', 'r', 'e', 'g', 'i', 'o', 'n', '"', '}', ',', '"', 'u', 's', '-', 'i', 's', + 'o', 'b', '-', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', + 't', 'i', 'o', 'n', '"', ':', '"', 'U', 'S', ' ', 'I', 'S', 'O', 'B', ' ', 'E', 'a', 's', 't', ' ', + '(', 'O', 'h', 'i', 'o', ')', '"', '}', '}', '}', ',', '{', '"', 'i', 'd', '"', ':', '"', 'a', 'w', + 's', '-', 'i', 's', 'o', '-', 'e', '"', ',', '"', 'o', 'u', 't', 'p', 'u', 't', 's', '"', ':', '{', + '"', 'd', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'c', 'l', 'o', 'u', 'd', '.', 'a', + 'd', 'c', '-', 'e', '.', 'u', 'k', '"', ',', '"', 'd', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', 'D', + 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'c', 'l', 'o', 'u', 'd', '.', 'a', 'd', 'c', + '-', 'e', '.', 'u', 'k', '"', ',', '"', 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't', 'G', 'l', 'o', 'b', + 'a', 'l', 'R', 'e', 'g', 'i', 'o', 'n', '"', ':', '"', 'e', 'u', '-', 'i', 's', 'o', 'e', '-', 'w', + 'e', 's', 't', '-', '1', '"', ',', '"', 'n', 'a', 'm', 'e', '"', ':', '"', 'a', 'w', 's', '-', 'i', + 's', 'o', '-', 'e', '"', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'D', 'u', 'a', 'l', 'S', + 't', 'a', 'c', 'k', '"', ':', 'f', 'a', 'l', 's', 'e', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', + 's', 'F', 'I', 'P', 'S', '"', ':', 't', 'r', 'u', 'e', '}', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', + 'R', 'e', 'g', 'e', 'x', '"', ':', '"', '^', 'e', 'u', '\\', '\\', '-', 'i', 's', 'o', 'e', '\\', '\\', + '-', '\\', '\\', 'w', '+', '\\', '\\', '-', '\\', '\\', 'd', '+', '$', '"', ',', '"', 'r', 'e', 'g', 'i', + 'o', 'n', 's', '"', ':', '{', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'e', '-', 'g', 'l', 'o', + 'b', 'a', 'l', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', + '"', 'A', 'W', 'S', ' ', 'I', 'S', 'O', 'E', ' ', '(', 'E', 'u', 'r', 'o', 'p', 'e', ')', ' ', 'g', + 'l', 'o', 'b', 'a', 'l', ' ', 'r', 'e', 'g', 'i', 'o', 'n', '"', '}', ',', '"', 'e', 'u', '-', 'i', + 's', 'o', 'e', '-', 'w', 'e', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', + 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'E', 'U', ' ', 'I', 'S', 'O', 'E', ' ', 'W', 'e', 's', 't', + '"', '}', '}', '}', ',', '{', '"', 'i', 'd', '"', ':', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', + 'f', '"', ',', '"', 'o', 'u', 't', 'p', 'u', 't', 's', '"', ':', '{', '"', 'd', 'n', 's', 'S', 'u', + 'f', 'f', 'i', 'x', '"', ':', '"', 'c', 's', 'p', '.', 'h', 'c', 'i', '.', 'i', 'c', '.', 'g', 'o', + 'v', '"', ',', '"', 'd', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', 'D', 'n', 's', 'S', 'u', 'f', 'f', + 'i', 'x', '"', ':', '"', 'c', 's', 'p', '.', 'h', 'c', 'i', '.', 'i', 'c', '.', 'g', 'o', 'v', '"', + ',', '"', 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't', 'G', 'l', 'o', 'b', 'a', 'l', 'R', 'e', 'g', 'i', + 'o', 'n', '"', ':', '"', 'u', 's', '-', 'i', 's', 'o', 'f', '-', 's', 'o', 'u', 't', 'h', '-', '1', + '"', ',', '"', 'n', 'a', 'm', 'e', '"', ':', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'f', '"', + ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'D', 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', '"', + ':', 'f', 'a', 'l', 's', 'e', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'F', 'I', 'P', 'S', + '"', ':', 't', 'r', 'u', 'e', '}', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 'R', 'e', 'g', 'e', 'x', + '"', ':', '"', '^', 'u', 's', '\\', '\\', '-', 'i', 's', 'o', 'f', '\\', '\\', '-', '\\', '\\', 'w', '+', + '\\', '\\', '-', '\\', '\\', 'd', '+', '$', '"', ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 's', '"', ':', + '{', '"', 'a', 'w', 's', '-', 'i', 's', 'o', '-', 'f', '-', 'g', 'l', 'o', 'b', 'a', 'l', '"', ':', + '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'A', 'W', 'S', ' ', + 'I', 'S', 'O', 'F', ' ', 'g', 'l', 'o', 'b', 'a', 'l', ' ', 'r', 'e', 'g', 'i', 'o', 'n', '"', '}', + ',', '"', 'u', 's', '-', 'i', 's', 'o', 'f', '-', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', '"', + 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '"', ':', '"', 'U', 'S', ' ', 'I', 'S', 'O', + 'F', ' ', 'E', 'A', 'S', 'T', '"', '}', ',', '"', 'u', 's', '-', 'i', 's', 'o', 'f', '-', 's', 'o', + 'u', 't', 'h', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', + '"', ':', '"', 'U', 'S', ' ', 'I', 'S', 'O', 'F', ' ', 'S', 'O', 'U', 'T', 'H', '"', '}', '}', '}', + ',', '{', '"', 'i', 'd', '"', ':', '"', 'a', 'w', 's', '-', 'e', 'u', 's', 'c', '"', ',', '"', 'o', + 'u', 't', 'p', 'u', 't', 's', '"', ':', '{', '"', 'd', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', + ':', '"', 'a', 'm', 'a', 'z', 'o', 'n', 'a', 'w', 's', '.', 'e', 'u', '"', ',', '"', 'd', 'u', 'a', + 'l', 'S', 't', 'a', 'c', 'k', 'D', 'n', 's', 'S', 'u', 'f', 'f', 'i', 'x', '"', ':', '"', 'a', 'm', + 'a', 'z', 'o', 'n', 'a', 'w', 's', '.', 'e', 'u', '"', ',', '"', 'i', 'm', 'p', 'l', 'i', 'c', 'i', + 't', 'G', 'l', 'o', 'b', 'a', 'l', 'R', 'e', 'g', 'i', 'o', 'n', '"', ':', '"', 'e', 'u', 's', 'c', + '-', 'd', 'e', '-', 'e', 'a', 's', 't', '-', '1', '"', ',', '"', 'n', 'a', 'm', 'e', '"', ':', '"', + 'a', 'w', 's', '-', 'e', 'u', 's', 'c', '"', ',', '"', 's', 'u', 'p', 'p', 'o', 'r', 't', 's', 'D', + 'u', 'a', 'l', 'S', 't', 'a', 'c', 'k', '"', ':', 'f', 'a', 'l', 's', 'e', ',', '"', 's', 'u', 'p', + 'p', 'o', 'r', 't', 's', 'F', 'I', 'P', 'S', '"', ':', 't', 'r', 'u', 'e', '}', ',', '"', 'r', 'e', + 'g', 'i', 'o', 'n', 'R', 'e', 'g', 'e', 'x', '"', ':', '"', '^', 'e', 'u', 's', 'c', '\\', '\\', '-', + '(', 'd', 'e', ')', '\\', '\\', '-', '\\', '\\', 'w', '+', '\\', '\\', '-', '\\', '\\', 'd', '+', '$', '"', + ',', '"', 'r', 'e', 'g', 'i', 'o', 'n', 's', '"', ':', '{', '"', 'e', 'u', 's', 'c', '-', 'd', 'e', + '-', 'e', 'a', 's', 't', '-', '1', '"', ':', '{', '"', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', + 'o', 'n', '"', ':', '"', 'E', 'U', ' ', '(', 'G', 'e', 'r', 'm', 'a', 'n', 'y', ')', '"', '}', '}', + '}', ']', ',', '"', 'v', 'e', 'r', 's', 'i', 'o', 'n', '"', ':', '"', '1', '.', '1', '"', '}'}; const struct aws_byte_cursor aws_s3_endpoint_resolver_partitions = { - .len = 4727, + .len = 4779, .ptr = (uint8_t *) s_generated_array }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-s3-0.8.1/source/s3_meta_request.c new/aws-c-s3-0.8.3/source/s3_meta_request.c --- old/aws-c-s3-0.8.1/source/s3_meta_request.c 2025-06-07 01:19:24.000000000 +0200 +++ new/aws-c-s3-0.8.3/source/s3_meta_request.c 2025-06-24 20:52:52.000000000 +0200 @@ -1428,7 +1428,8 @@ } if (request->send_data.response_body.capacity == 0) { - if (request->ticket != NULL) { + /* Make sure that request is get, since puts can also have ticket allocated, which is used for request body. */ + if (request->request_type == AWS_S3_REQUEST_TYPE_GET_OBJECT && request->ticket != NULL) { request->send_data.response_body = aws_s3_buffer_ticket_claim(request->ticket); } else { size_t buffer_size = s_dynamic_body_initial_buf_size; @@ -1436,6 +1437,9 @@ } } + /* Sanity checking that we somehow haven't reused the same buffer for both upload and download*/ + AWS_FATAL_ASSERT(request->send_data.response_body.buffer != request->request_body.buffer); + /* Note: not having part sized response body means the buffer is dynamic and * can grow. */ if (s_response_body_append(&request->send_data.response_body, data)) { @@ -2366,54 +2370,44 @@ /* If we don't already have a buffer, grab one from the pool. */ if (meta_request->synced_data.async_write.buffered_data_ticket == NULL) { - if (meta_request->synced_data.async_write.buffered_data_ticket == NULL && - meta_request->synced_data.async_write.buffered_ticket_future == NULL) { - /* NOTE: we acquire a forced-buffer because there's a risk of deadlock if we - * waited for a normal ticket reservation, respecting the pool's memory limit. - * (See "test_s3_many_async_uploads_without_data" for description of deadlock scenario) */ - - struct aws_s3_buffer_pool_reserve_meta meta = { - .size = meta_request->part_size, - .can_block = true, - .meta_request = meta_request, - .client = meta_request->client}; - - meta_request->synced_data.async_write.buffered_ticket_future = - aws_s3_buffer_pool_reserve(meta_request->client->buffer_pool, meta); + struct aws_future_s3_buffer_ticket *buffered_ticket_future; + /* NOTE: we acquire a forced-buffer because there's a risk of deadlock if we + * waited for a normal ticket reservation, respecting the pool's memory limit. + * (See "test_s3_many_async_uploads_without_data" for description of deadlock scenario) */ + + struct aws_s3_buffer_pool_reserve_meta meta = { + .size = meta_request->part_size, + .can_block = true, + .meta_request = meta_request, + .client = meta_request->client}; - AWS_FATAL_ASSERT(meta_request->synced_data.async_write.buffered_ticket_future); - } + buffered_ticket_future = aws_s3_buffer_pool_reserve(meta_request->client->buffer_pool, meta); + AWS_FATAL_ASSERT(buffered_ticket_future); - if (aws_future_s3_buffer_ticket_is_done(meta_request->synced_data.async_write.buffered_ticket_future)) { - if (aws_future_s3_buffer_ticket_get_error( - meta_request->synced_data.async_write.buffered_ticket_future) != AWS_OP_SUCCESS) { + if (aws_future_s3_buffer_ticket_is_done(buffered_ticket_future)) { + if (aws_future_s3_buffer_ticket_get_error(buffered_ticket_future) != AWS_OP_SUCCESS) { AWS_LOGF_ERROR(AWS_LS_S3_META_REQUEST, "id=%p: Failed to acquire buffer.", (void *)meta_request); illegal_usage_terminate_meta_request = true; } else { meta_request->synced_data.async_write.buffered_data_ticket = - aws_future_s3_buffer_ticket_get_result_by_move( - meta_request->synced_data.async_write.buffered_ticket_future); + aws_future_s3_buffer_ticket_get_result_by_move(buffered_ticket_future); - meta_request->synced_data.async_write.buffered_ticket_future = aws_future_s3_buffer_ticket_release( - meta_request->synced_data.async_write.buffered_ticket_future); + aws_future_s3_buffer_ticket_release(buffered_ticket_future); meta_request->synced_data.async_write.buffered_data = aws_s3_buffer_ticket_claim(meta_request->synced_data.async_write.buffered_data_ticket); } } else { - /* Failing to acquire memory synchronously is a hard error for now. Consider relaxing this in future. */ - meta_request->synced_data.async_write.buffered_ticket_future = - aws_future_s3_buffer_ticket_release(meta_request->synced_data.async_write.buffered_ticket_future); - - AWS_LOGF_TRACE( + AWS_LOGF_ERROR( AWS_LS_S3_META_REQUEST, "id=%p: Illegal call to write(). Failed to acquire buffer memory.", (void *)meta_request); illegal_usage_terminate_meta_request = true; + aws_future_s3_buffer_ticket_release(buffered_ticket_future); } } - if (!illegal_usage_terminate_meta_request && !result.is_pending) { + if (!illegal_usage_terminate_meta_request) { /* Copy as much data as we can into the buffer */ struct aws_byte_cursor processed_data = aws_byte_buf_write_to_capacity(&meta_request->synced_data.async_write.buffered_data, &data); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-s3-0.8.1/tests/s3_data_plane_tests.c new/aws-c-s3-0.8.3/tests/s3_data_plane_tests.c --- old/aws-c-s3-0.8.1/tests/s3_data_plane_tests.c 2025-06-07 01:19:24.000000000 +0200 +++ new/aws-c-s3-0.8.3/tests/s3_data_plane_tests.c 2025-06-24 20:52:52.000000000 +0200 @@ -3375,8 +3375,10 @@ struct aws_s3_buffer_pool *s_always_error_buffer_pool_fn( struct aws_allocator *allocator, - struct aws_s3_buffer_pool_config config) { + struct aws_s3_buffer_pool_config config, + void *user_data) { (void)config; + (void)user_data; struct aws_s3_buffer_pool *pool = aws_mem_calloc(allocator, 1, sizeof(struct aws_s3_buffer_pool)); pool->impl = allocator; pool->vtable = &s_failing_pool_vtable; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-s3-0.8.1/tests/s3_mock_server_tests.c new/aws-c-s3-0.8.3/tests/s3_mock_server_tests.c --- old/aws-c-s3-0.8.1/tests/s3_mock_server_tests.c 2025-06-07 01:19:24.000000000 +0200 +++ new/aws-c-s3-0.8.3/tests/s3_mock_server_tests.c 2025-06-24 20:52:52.000000000 +0200 @@ -466,10 +466,20 @@ .mock_server = true, }; - ASSERT_SUCCESS(aws_s3_tester_send_meta_request_with_options(&tester, &put_options, NULL)); + struct aws_s3_meta_request_test_results meta_request_test_results; + aws_s3_meta_request_test_results_init(&meta_request_test_results, allocator); + + ASSERT_SUCCESS(aws_s3_tester_send_meta_request_with_options(&tester, &put_options, &meta_request_test_results)); + + ASSERT_INT_EQUALS(meta_request_test_results.upload_review.part_count, 2); + /* Note: the data we currently generate is always the same, + * so make sure that retry does not mangle the data by checking the checksum value */ + ASSERT_STR_EQUALS("7/xUXw==", aws_string_c_str(meta_request_test_results.upload_review.part_checksums_array[0])); + ASSERT_STR_EQUALS("PCOjcw==", aws_string_c_str(meta_request_test_results.upload_review.part_checksums_array[1])); aws_s3_client_release(client); aws_s3_tester_clean_up(&tester); + aws_s3_meta_request_test_results_clean_up(&meta_request_test_results); return AWS_OP_SUCCESS; }